web-dev-qa-db-fra.com

Comment utiliser des images en css avec Webpack

Je suis en train de faire un React w/configuration Webpack et j'ai du mal à faire ce qui semble être une tâche simple. Je veux que webpack inclue des images et les réduise comme moi avec gulp mais je peux. ' Je veux juste pouvoir lier une image dans mon css comme ceci:

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

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

J'ai tous mes dossiers css/js/img dans un dossier src. Webpack renvoie dans un dossier dist, mais je ne vois pas comment y obtenir des images.

Voici la configuration de mon 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
  }
};
38
user3737841

J'étais coincé avec un problème similaire et j'ai constaté que vous pouvez utiliser les instructions url-loader pour résoudre les instructions "url()" dans votre code CSS, comme toute autre instruction require ou import.

Pour l'installer:

npm install url-loader --save-dev

Il installera le chargeur capable de convertir les chemins résolus en chaînes BASE64.

Dans votre fichier de configuration webpack, utilisez url-loader dans loader

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

Assurez-vous également que vous spécifiez correctement votre chemin public et le chemin des images que vous essayez de charger.

58
WitVault