Assets in CSS bundels in Webpack

Laten we het nu zo instellen dat paden naar .png bestanden worden vervangen in CSS bestanden tijdens het bouwen:

webpack.config.jsexport 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(),
  ],
};

Laten we testen hoe dit werkt. Laten we een afbeelding en een stijlbestand importeren in het entry point:

src/index.jsimport './images/img.png';
import './styles.css';

Stel dat we in het stijlbestand een pad naar de afbeelding gebruiken:

src/styles.cssbody {
  background: url('images/img.png');
}

Na het bouwen zal het pad naar de afbeelding in de CSS bundle worden gewijzigd naar een nieuw pad:

dist/bundle.ec64ceadef9be2621b7f.cssbody {
  background: url('correct pad vanaf de root');
}
Задание 1

Stel een achtergrondafbeelding in het CSS-bestand in.

Задание 2

Importeer de afbeelding in het entry point.

Задание 3

Voer een build uit en kijk naar welk bestand de afbeelding wordt gekopieerd en hoe het nieuwe pad eruit zal zien in de CSS bundle.