Bundle-uri de script cu hash în layout în Webpack

De obicei, atunci când construim un proiect, dorim ca numele bundle-urilor să conțină hash-uri. Avem nevoie de acest lucru pentru a rezolva problema cu cache-ul fișierelor de către browser.

Prin urmare, este convenabil faptul că Webpack automat va conecta bundle-uri cu nume care conțin hash-uri. Să verificăm. Să presupunem că avem următoarele setări:

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

După build, în fișierul layout-ului vor fi conectate bundle-urile noastre cu hash-uri:

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>

În același timp, atunci când fișierele proiectului sunt modificate și se face rebuild, Webpack automat va schimba hash-urile și va introduce modificări în fișierul layout-ului. Dacă fișierele proiectului nu s-au modificat, atunci nici hash-ul nu se va schimba.

Задание 1

Creați trei puncte de intrare. Faceți astfel încât acestea să fie colectate în bundle-uri separate cu nume care conțin hash-uri.

Задание 2

Efectuați build-ul proiectului. Asigurați-vă că în fișierul layout-ului sunt conectate toate bundle-urile.

Задание 3

Modificați textul în fișierul sursă al unuia dintre punctele de intrare. Efectuați build-ul. Verificați că hash-ul bundle-ului acelui punct se va schimba, iar al celorlalte bundle-uri - nu.