Как использовать изображения в css с Webpack

Я делаю React W / Webpack setup и изо всех сил пытаюсь сделать то, что кажется простой задачей. Я хочу, чтобы webpack включал изображения и минимизировал их, как я с gulp, но я не могу понять это. Я просто хочу иметь возможность связать изображение в моем 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
  }
};

1 ответов


Я застрял с подобной проблемой и обнаружил, что вы можете использовать url-loader разрешить "url()" операторы в вашем CSS, как и любые другие операторы require или import.

чтобы установить его:

npm install url-loader --save-dev

он установит загрузчик, который может конвертировать разрешенные пути в строки BASE64.

в конфигурационном файле webpack используйте url-loader в загрузчиках

{
  test: /\.(png|jpg)$/,
  loader: 'url-loader'
}

также убедитесь, что вы правильно указываете ваш открытый путь и путь изображений, которые вы пытаетесь загрузить.