【发布时间】:2019-08-25 02:36:02
【问题描述】:
如何获取 webpack4 生成的 chunkhash 值,以便在我的 index.html 中使用它来正确设置脚本 src?
简要背景:希望这不是一个愚蠢的问题,因为我是 webpack 的新手,今天开始学习。我知道如何配置、提取 js、css、缩小它们,也许还有所有非常基本的操作。
这是我的webpack.config.js:
const path = require('path')
const webpack = require('webpack')
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const OptmizerCssAssetsPlugin = require('optimize-css-assets-webpack-plugin')
const TerserPlugin = require('terser-webpack-plugin')
module.exports = {
entry: './src/index.js',
output: {
path: path.resolve('dist'),
filename: '[chunkhash].bundle.js' // <<<<<<
},
mode: 'development',
optimization: {
minimizer: [
new TerserPlugin({}),
new OptmizerCssAssetsPlugin({})
],
splitChunks: {
chunks: 'all'
}
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
cacheDirectory: true
}
}
},
{
test: /\.css$/,
use: [
{ loader: MiniCssExtractPlugin.loader },
'css-loader'
]
}
]
},
plugins: [
new webpack.ProvidePlugin({
cowsay: 'cowsay-browser'
}),
new MiniCssExtractPlugin({
filename: 'css/[name].css'
})
]
}
相关部分在filename: '[chunkhash].bundle.js' 中,它将生成类似6f9e5dd33686783a5ff8.bundle.js 的文件名。
我可以在我的 html 中使用该名称,例如 <script src="dist/6f9e5dd33686783a5ff8.bundle.js"></script>,但每次更新/重新生成代码时我都必须更改它。
我可以使用filename: '[name].bundle.js' 代替chunkhash,但它不适合缓存海豚。
那么,有什么方法可以让我在每次构建项目时自动获取chunkhash 值并使用它在我的index.html 中设置我的脚本src 文件名?
任何有效的建议都会受到欢迎!
【问题讨论】:
标签: javascript html webpack-4 webpack-splitchunks splitchunksplugin