webentwicklung-frage-antwort-db.com.de

Verwendung von Bildern in CSS mit Webpack

Ich führe ein React w/Webpack-Setup durch und habe Mühe, eine scheinbar einfache Aufgabe zu erledigen. Ich möchte, dass das Webpack Bilder enthält und diese minimiert, wie ich es mit gulp tue, aber ich kann ' t find it out. Ich möchte nur in der Lage sein, ein Bild in meinem CSS wie folgt zu verlinken:

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

body { background: url('./img/background.jpg'); }

Ich habe alle meine css/js/img-Ordner in einem src-Ordner. Webpack gibt in einen dist-Ordner aus, aber ich kann nicht herausfinden, wie ich Bilder dorthin bekomme.

Hier ist mein Webpack-Setup:

 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
  }
};
38
user3737841

Ich hatte ein ähnliches Problem und stellte fest, dass Sie url-loader verwenden können, um "url()" -Anweisungen in Ihrem CSS aufzulösen, wie es andere erfordern oder Anweisungen importieren.

So installieren Sie es:

npm install url-loader --save-dev

Es wird das Ladeprogramm installiert, das aufgelöste Pfade als BASE64-Zeichenfolgen konvertieren kann.

Verwenden Sie in Ihrer Webpack-Konfigurationsdatei den URL-Loader in Loadern

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

Stellen Sie außerdem sicher, dass Sie Ihren öffentlichen Pfad und den Pfad der Bilder, die Sie laden möchten, korrekt angeben.

58
WitVault