Бандлы скриптов с хешем в макете в 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 автоматически будет изменять хеши и вносить изменения в файл макета. Если же файлы проекта не изменялись, то и хеш не будет меняться.
Сделайте три точки входа. Сделайте так, чтобы они собирались в отдельные бандлы с именами, содержащими хеши.
Выполните сборку проекта. Убедитесь, что в файле макета подключены все бандлы.
Измените текст в исходном файле одной из точек входа. Выполните сборку. Проверьте, что хеш бандла этой точки изменится, а остальных бандлов - нет.