Бандлове със скриптове с хеш в макет в Webpack

По принцип при изграждане на проект ние искаме имената на бандловете да съдържат хеш. Това ни е необходимо, за да решим проблема с кеширането на файлове от браузъра.

Затова е удобно, че Webpack автоматично ще свързва бандлове с имена, съдържащи хеш. Нека проверим. Да предположим, че имаме следните настройки:

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

След изграждане към файла на макета ще бъдат свързани нашите бандлове с хешове:

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>

При това при промяна на файловете на проекта и преизграждане, Webpack автоматично ще променя хешовете и ще внася промени във файла на макета. Ако файловете на проекта не са променяни, то и хешът няма да се променя.

Задание 1

Направете три входни точки. Направете така, че те да се изграждат в отделни бандлове с имена, съдържащи хеш.

Задание 2

Изпълнете изграждане на проекта. Уверете се, че във файла на макета са свързани всички бандлове.

Задание 3

Променете текста в изходния файл на една от входните точки. Изпълнете изграждане. Проверете, че хешът на бандла на тази точка ще се промени, а на останалите бандлове - не.