如何通过 Webpack 使用 css 中的图像
How to use images in css with Webpack
我正在制作一个带有 Webpack 设置的 React,并且正在努力完成看起来应该是一项简单的任务。我希望 webpack 包含图像,并像我一样使用 gulp 将它们最小化,但我无法弄清楚。我只是希望能够 link 我的 css 中的图像,如下所示:
/* ./src/img/background.jpg */
body { background: url('./img/background.jpg'); }
我的所有 css/js/img 文件夹都在一个 src 文件夹中。 Webpack 输出到 dist 文件夹,但我不知道如何在那里获取图像。
这是我的 webpack 设置:
var path = require('path');
var webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
devtool: 'cheap-eval-source-map',
entry: [
'webpack-dev-server/client?http://localhost:8080',
'webpack/hot/dev-server',
'./src/index.js'
],
output: {
path: path.join(__dirname, 'dist'),
// publicPath: './dist',
filename: 'bundle.js'
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
new HtmlWebpackPlugin({
template: './src/index.html'
})
],
module: {
loaders: [{
exclude: /node_modules/,
test: /\.js?$/,
loader: 'babel'
}, {
test: /\.scss$/,
loader: 'style!css!sass'
}, {
test: /\.(png|jpg)$/,
loader: 'file-loader'
}]
},
devServer: {
historyApiFallback: true,
contentBase: './dist',
hot: true
}
};
我遇到了类似的问题,发现您可以使用 url-loader
来解析 CSS 中的 "url()"
语句,就像任何其他 require 或 import 语句一样。
要安装它:
npm install url-loader --save-dev
它将安装可以将解析路径转换为 BASE64 字符串的加载器。
在你的 webpack 配置文件中使用 url-loader in loaders
{
test: /\.(png|jpg)$/,
loader: 'url-loader'
}
还要确保您正确指定了 public 路径和您要加载的图像的路径。
使用 background-image: url('./img/background.jpg') 在 scss 文件中对我有用,没有 url-loader。只有 .png|.jpg|... 等的文件加载器
我正在制作一个带有 Webpack 设置的 React,并且正在努力完成看起来应该是一项简单的任务。我希望 webpack 包含图像,并像我一样使用 gulp 将它们最小化,但我无法弄清楚。我只是希望能够 link 我的 css 中的图像,如下所示:
/* ./src/img/background.jpg */
body { background: url('./img/background.jpg'); }
我的所有 css/js/img 文件夹都在一个 src 文件夹中。 Webpack 输出到 dist 文件夹,但我不知道如何在那里获取图像。
这是我的 webpack 设置:
var path = require('path');
var webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
devtool: 'cheap-eval-source-map',
entry: [
'webpack-dev-server/client?http://localhost:8080',
'webpack/hot/dev-server',
'./src/index.js'
],
output: {
path: path.join(__dirname, 'dist'),
// publicPath: './dist',
filename: 'bundle.js'
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
new HtmlWebpackPlugin({
template: './src/index.html'
})
],
module: {
loaders: [{
exclude: /node_modules/,
test: /\.js?$/,
loader: 'babel'
}, {
test: /\.scss$/,
loader: 'style!css!sass'
}, {
test: /\.(png|jpg)$/,
loader: 'file-loader'
}]
},
devServer: {
historyApiFallback: true,
contentBase: './dist',
hot: true
}
};
我遇到了类似的问题,发现您可以使用 url-loader
来解析 CSS 中的 "url()"
语句,就像任何其他 require 或 import 语句一样。
要安装它:
npm install url-loader --save-dev
它将安装可以将解析路径转换为 BASE64 字符串的加载器。
在你的 webpack 配置文件中使用 url-loader in loaders
{
test: /\.(png|jpg)$/,
loader: 'url-loader'
}
还要确保您正确指定了 public 路径和您要加载的图像的路径。
使用 background-image: url('./img/background.jpg') 在 scss 文件中对我有用,没有 url-loader。只有 .png|.jpg|... 等的文件加载器