vue-cli-service build --target lib 场景下不能配置文件名hash
yaojiafeng opened this issue · 0 comments
构建 umd 的命令:vue-cli-service build --target lib --inline-vue --name subapp ./src/main.js ,发现生成的umd.js文件不带hash,尝试在vue.config.js中配置hash:
configureWebpack: {
output: {
// 在文件名中添加哈希
filename: '[name].js',
chunkFilename: '[name].[hash].js'
}
}
但是上面打包后文件名并没带hash。
深入查看打包源码,发现:node_modules@vue\cli-service\lib\commands\build\resolveLibConfig.js文件中:
rawConfig.output = Object.assign({
library: libName,
libraryExport: isVueEntry ? 'default' : undefined,
libraryTarget: format,
// preserve UDM header from webpack 3 until webpack provides either
// libraryTarget: 'esm' or target: 'universal'
// webpack/webpack#6522
// webpack/webpack#6525
globalObject: (typeof self !== 'undefined' ? self : this)
}, rawConfig.output, {
filename: ${entryName}.js,
chunkFilename: ${entryName}.[name].js,
// use dynamic publicPath so this can be deployed anywhere
// the actual path will be determined at runtime by checking
// document.currentScript.src.
publicPath: ''
})
外部配置的chunkFilename已经被写死覆盖了。