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

Как правило при сборке проекта мы хотим, чтобы имена бандлов содержали хеши. Нам это нужно для того, чтобы решить проблему с кешированием файлов браузером.

Поэтому удобно то, что Webpack автоматически будет подключать бандлы с именами, содержащими хеши. Давайте проверим. Пусть у нас есть следующие настройки:

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

После сборки к файлу макета будут подключены наши бандлы с хешами:

<!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 автоматически будет изменять хеши и вносить изменения в файл макета. Если же файлы проекта не изменялись, то и хеш не будет меняться.

Сделайте три точки входа. Сделайте так, чтобы они собирались в отдельные бандлы с именами, содержащими хеши.

Выполните сборку проекта. Убедитесь, что в файле макета подключены все бандлы.

Измените текст в исходном файле одной из точек входа. Выполните сборку. Проверьте, что хеш бандла этой точки изменится, а остальных бандлов - нет.