Assets nei bundle CSS in Webpack
Ora facciamo in modo che
i percorsi ai file .png vengano sostituiti
nei file CSS durante la build:
export default {
entry: './src/index.js',
output: {
filename: 'bundle.js',
path: path.resolve('dist')
},
module: {
rules: [
{
test: /\.png$/,
type: 'asset/resource'
},
{
test: /\.css$/i,
use: [MiniCssExtractPlugin.loader, 'css-loader'],
},
]
},
plugins: [
new MiniCssExtractPlugin({
filename: 'bundle.[contenthash].css'
}),
new HtmlWebpackPlugin(),
],
};
Verifichiamo come funziona. Colleghiamo un'immagine al punto di ingresso e un file di stili:
import './images/img.png';
import './styles.css';
Supponiamo che nel file di stili utilizziamo il percorso dell'immagine:
body {
background: url('images/img.png');
}
Dopo la build, nel bundle CSS il percorso all'immagine verrà cambiato in uno nuovo:
body {
background: url('percorso corretto dalla root');
}
Impostate un'immagine di sfondo nel file CSS.
Collegate l'immagine al punto di ingresso.
Eseguite la build e osservate in quale file verrà copiata l'immagine e come apparirà il nuovo percorso nel bundle CSS.