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
}
};
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.