Les assets dans les bundles CSS avec Webpack

Faisons en sorte maintenant que les chemins vers les fichiers .png soient remplacés dans les fichiers CSS lors de la construction :

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(),
  ],
};

Vérifions comment cela fonctionne. Importons une image et un fichier de styles dans le point d'entrée :

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

Supposons que dans le fichier de styles, nous utilisons le chemin vers l'image :

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

Après la construction, dans le bundle CSS, le chemin vers l'image sera modifié pour le nouveau :

dist/bundle.ec64ceadef9be2621b7f.cssbody {
  background: url('chemin correct depuis la racine');
}
Задание 1

Définissez une image de fond dans le fichier CSS.

Задание 2

Importez l'image dans le point d'entrée.

Задание 3

Effectuez la construction et observez dans quel fichier l'image est copiée et à quoi ressemble le nouveau chemin dans le bundle CSS.