Enable contenthash in filename for dynamic assets (#20813) (#20932)

This should solve the main problem of dynamic assets getting stale after
a version upgrade. Everything not affected will use query-string based
cache busting, which includes files loaded via HTML or worker scripts.
This commit is contained in:
silverwind 2022-08-25 08:16:20 +02:00 committed by GitHub
parent 5ebd26d306
commit 85f829fb3c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 1015 additions and 3038 deletions

View file

@ -75,7 +75,7 @@ export default {
},
chunkFilename: ({chunk}) => {
const language = (/monaco.*languages?_.+?_(.+?)_/.exec(chunk.id) || [])[1];
return language ? `js/monaco-language-${language.toLowerCase()}.js` : `js/[name].js`;
return `js/${language ? `monaco-language-${language.toLowerCase()}` : `[name]`}.[contenthash:8].js`;
},
},
optimization: {
@ -174,14 +174,14 @@ export default {
test: /\.(ttf|woff2?)$/,
type: 'asset/resource',
generator: {
filename: 'fonts/[name][ext]',
filename: 'fonts/[name].[contenthash:8][ext]',
}
},
{
test: /\.png$/i,
type: 'asset/resource',
generator: {
filename: 'img/webpack/[name][ext]',
filename: 'img/webpack/[name].[contenthash:8][ext]',
}
},
],
@ -190,17 +190,17 @@ export default {
new VueLoaderPlugin(),
new MiniCssExtractPlugin({
filename: 'css/[name].css',
chunkFilename: 'css/[name].css',
chunkFilename: 'css/[name].[contenthash:8].css',
}),
new SourceMapDevToolPlugin({
filename: '[file].map',
filename: '[file].[contenthash:8].map',
include: [
'js/index.js',
'css/index.css',
],
}),
new MonacoWebpackPlugin({
filename: 'js/monaco-[name].worker.js',
filename: 'js/monaco-[name].[contenthash:8].worker.js',
}),
isProduction ? new LicenseCheckerWebpackPlugin({
outputFilename: 'js/licenses.txt',