Bundle skryptów z hashem w layoucie w Webpack

Zazwyczaj podczas budowania projektu chcemy, aby nazwy bundle zawierały hash. Potrzebujemy tego, aby rozwiązać problem z cache'owaniem plików przez przeglądarkę.

Dlatego wygodne jest to, że Webpack automatycznie będzie podłączał bundle z nazwami, zawierającymi hash. Sprawdźmy. Załóżmy, że mamy następujące ustawienia:

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

Po zbudowaniu do pliku layoutu będą podłączone nasze bundle z hashami:

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>

Przy tym przy zmianie plików projektu i przebudowaniu Webpack automatycznie będzie zmieniał hashe i wprowadzał zmiany do pliku layoutu. Jeśli zaś pliki projektu nie uległy zmianie, to i hash nie będzie się zmieniał.

Задание 1

Zrób trzy punkty wejścia. Spraw, aby były budowane w oddzielne bundle z nazwami zawierającymi hashe.

Задание 2

Wykonaj budowanie projektu. Upewnij się, że w pliku layoutu podłączone są wszystkie bundle.

Задание 3

Zmień tekst w pliku źródłowym jednego z punktów wejścia. Wykonaj budowanie. Sprawdź, że hash bundle tego punktu się zmieni, a pozostałych bundle - nie.