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:
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(),
],
};
După build, în fișierul layout-ului vor fi conectate bundle-urile noastre cu hash-uri:
<!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.
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.
Efectuați build-ul proiectului. Asigurați-vă că în fișierul layout-ului sunt conectate toate bundle-urile.
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.