如何在Webpack中使用css中的图像

use*_*841 41 css image loader reactjs webpack

我正在制作一个带有Webpack设置的React,我正在努力做一些看似应该是一个简单的任务.我希望webpack包含图像,并尽量减少它们,就像我吞咽一样,但我无法弄明白.我只是希望能够像我这样在我的CSS中链接图像:

/* ./src/img/background.jpg */

body { background: url('./img/background.jpg'); }
Run Code Online (Sandbox Code Playgroud)

我在src文件夹中包含了所有的css/js/img文件夹.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
  }
};
Run Code Online (Sandbox Code Playgroud)

Wit*_*ult 63

我遇到了类似的问题,发现你可以url-loader用来解析"url()"CSS中的语句,就像任何其他需要或导入语句一样.

要安装它:

npm install url-loader --save-dev

它将安装可以将已解析路径转换为BASE64字符串的加载器.

在您的webpack配置文件中,在加载器中使用url-loader

{
  test: /\.(png|jpg)$/,
  loader: 'url-loader'
}
Run Code Online (Sandbox Code Playgroud)

还要确保正确指定公共路径以及要加载的图像路径.

  • @ user3737841您应该能够在样式表中"要求"图像.例如,`background-image:url('../ assets/img/logo-dark.png')`.您只需尝试/调整以获得正确的路径. (4认同)
  • @VariableContent btw url-loader有一个选项`limit`,如果图像大于限制,它将把它解析为url而不是base64字符串 (4认同)
  • 我的webpack-dev服务器从/ dist提供服务,而我的映像位于/ src中,所以您知道如何引用.css文件中的映像吗?这些图像是否应该与我的bundle.js汇总在一起?我只是不确定如何将它们添加到/ dist,因为/ dist文件夹只是从webpack-dev-server提供的虚拟文件夹 (2认同)