angular / cli 6支持自定义webpack配置,可以指定自定义应用程序引导程序。
"projects": {
"custom-name": {
// ...
"architect": {
// ...
"build": {
"builder": "@angular-devkit/build-webpack:webpack",
"options": {
"webpackConfig": "webpack.config.js"
}
}
}
可以这样指定自定义webpack配置
const path = require('path');
const config = {
entry: './src/custom-app.js',
mode: 'production',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'custom-app.js'
}
};
module.exports = config;
然后可以在angular.json
中引用输出包
"scripts": [
{ "input": "dist/custom-app.js", "lazy": true }
]
然后原样使用
export class AppComponent {
ngOnInit(): void {
const customApp = new Worker('custom-app.js');
}
}
使用上述设置,缓存可能会成为问题!
如果我们需要使用custom-app.js
来哈希hashcontent
捆绑包怎么办?
const path = require('path');
const config = {
entry: './src/custom-app.js',
mode: 'production',
output: {
path: path.resolve(__dirname, 'dist'),
filename: '[name][contenthash].js'
}
};
module.exports = config;
这将不再导致custom-app.js
,而是类似custom-app1247989898989.js
的结果。
有没有一种方法可以加载哈希文件而不必在构建时存储哈希?
欢迎任何建议 欢呼声
答案 0 :(得分:0)
答案 1 :(得分:0)
经过大量研究,这是我发现的。 这是尝试了SO和Github的一些建议的结果...
首先,我必须更改我的webpack.config.js
以添加contenthash
支持
const path = require('path');
const config = {
entry: './src/custom-app.js',
mode: 'production',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'custom-app.[contenthash].js'
}
};
module.exports = config;
在输出对象中,如果有多个条目,可以用custom-app
替换[name]
。
然后我可以使用下面的代码段包含我的哈希脚本
export class AppComponent {
ngOnInit(): void {
const customApp = new Worker('custom-app.XXXXXXXXXXXXXXXXXXXX.js);
}
}
XXXXXXXXXXXXXXXXXXXX
是文件的哈希值。
这有一些缺点,例如,如果我更改了custom-app
文件,则哈希值将发生变化,我需要引用新的哈希值...
但是它对我有用,因为我正在大量更换工人...