Bundle di script con hash nel layout in Webpack

Di solito, quando costruiamo un progetto, vogliamo che i nomi dei bundle contengano hash. Ne abbiamo bisogno per risolvere il problema della cache dei file da parte del browser.

Quindi è conveniente che Webpack colleghi automaticamente i bundle con nomi che contengono hash. Verifichiamolo. Supponiamo di avere le seguenti impostazioni:

webpack.config.jsexport default {
  context: path.resolve( 'src'),
  entry: {
    test1: './test1.js',
    test2: './test2.js'
  },
  output: {
    filename: '[name].[contenthash].js',
    path: path.resolve('dist'),
  },
  plugins: [
    new HtmlWebpackPlugin(),
  ],
};

Dopo la build, i nostri bundle con hash saranno collegati al file di layout:

dist/index.html<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Webpack App</title>
    <script defer src="test1.4173b379c6d6ff439604.js"></script>
    <script defer src="test2.72be8754d7c4cb0ece00.js"></script>
  </head>
  <body>
    
  </body>
</html>

Inoltre, quando i file del progetto vengono modificati e ricostruiti, Webpack cambierà automaticamente gli hash e apporterà modifiche al file di layout. Se invece i file del progetto non sono cambiati, nemmeno l'hash cambierà.

Задание 1

Crea tre entry point. Configurali in modo che vengano compilati in bundle separati con nomi contenenti hash.

Задание 2

Esegui la build del progetto. Assicurati che nel file di layout siano collegati tutti i bundle.

Задание 3

Modifica il testo nel file sorgente di uno degli entry point. Esegui la build. Verifica che l'hash del bundle di quell'entry point sia cambiato, mentre quello degli altri bundle no.