使用 Angular-cli 命令 ng build -prod
构建时,生成的文件名为 main.[hash].bundle.js。是否可能从文件名中删除哈希值,只将其命名为 main.bundle.js
?
使用 Angular-cli 命令 ng build -prod
构建时,生成的文件名为 main.[hash].bundle.js。是否可能从文件名中删除哈希值,只将其命名为 main.bundle.js
?
从beta.25版本开始,该功能可通过命令选项进行支持。
这允许通过新的构建命令选项
--output-hashing
在构建期间配置输出文件名哈希值。有四个可能的值:
none
:不执行哈希处理
media
:仅对通过[url|file]-loaders处理的文件添加哈希
bundles
:仅对输出包添加哈希
all
:同时对媒体和包添加哈希对于开发目标,默认值为 none。 对于生产目标,默认值为 all。
更多详细信息请点击这里。
我在package.json文件中为生产构建添加了以下脚本元素。
"scripts": {
"prod" : "ng build --prod --output-hashing=none --base-href=./"
}
然后运行
npm run prod
构建的 dist 文件夹将不包含哈希,并且会将 ./ 作为 base-href 包含在内,以便文件相对于当前目录加载。
hash
用于生产构建,以避免浏览器缓存问题,并且用户在使用新部署之前不必清除缓存。angular-cli
团队会给我们提供配置选项,我们需要等待确认。尝试使用以下方法:
ng build --prod --output-hashing none
目前你无法使用cli完成这个操作,但是你可以退出并使用标准的Webpack。
在你的项目中运行ng eject
,它将构建一个适当的Webpack配置和脚本。
你可以在GitHub上的Wiki中了解更多信息。
https://github.com/angular/angular-cli/wiki/eject
一旦你获得了配置,你可以按照 @tallaxes 的建议去做。
从以下行中删除[chunkhash]
,这些行位于angular-cli/models/webpack-build-production.js
中(如果是修补,则在node_modules
下,在分叉的情况下在packages
下):
filename: '[name].[chunkhash].bundle.js',
sourceMapFilename: '[name].[chunkhash].bundle.map',
chunkFilename: '[id].[chunkhash].chunk.js'