【发布时间】:2020-12-01 22:37:46
【问题描述】:
默认情况下,Angular CLI (ver-8) 不会删除 cmets 并缩小 js dev build 生成的文件。 (main.js、vendor.js、scripts.js 等)。
我们正在导入 JitCompiler,因此需要使用优化生成的输出文件(vendor.js、main.js 等)的 Dev Build
我添加了自己的 webpack 文件 webpackext.config.js。并通过“@angular-builders/custom-webpack:browser 使用它。我可以使用以下配置从生成的文件中删除 cmets。我还需要使用一些插件来缩小生成的文件。我们如何做到这一点,需要有关插件的信息以及配置方法。
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
const path = require("path");
module.exports = {
entry: './src/main.js',
output: {
filename: '[name].bundle.js',
path: path.resolve(__dirname, 'dist')
},
plugins: [
new UglifyJsPlugin({
uglifyOptions: {
output: {
comments: false
}
}
})
]
}
我们为什么需要这个:我们正在使用 Require JS 加载延迟加载的模块。延迟加载的模块(sample.module.js)由最终用户放置。他们从他们的应用程序中生成延迟加载的模块。由于将 jit 编译器导入我们的系统以按需创建最终用户的组件,因此我们无法进行生产构建。我们已经将我们的系统从 Angular 4 升级到了 Angular 8。在 Angular 4 早期,所有的 js 文件都被缩小了。但是在 Angular 8 中,js 文件的大小增加了一倍。
require.ensure(
["assets/samples/sample.module.js"],
(require) => {
let SampleCo = require(assets/samples/sample.module.js");
this._compiler
.compileModuleAndAllComponentsAsync(
SampleCo.SampleCustomModule
).then((compiled) => {
const component1 = compiled.componentFactories.find(
(m) => m.selector == "sample-comp1"
); });
//here we create component with ViewContainerRefr
},
"custom/sampleLib"
}
使用 UglifyJsPlugin 后,生成的 js 文件被缩小。但是加载系统时出错,错误如下
Uncaught Error: Can't resolve all parameters for hC: (?).
at Li (vendor.js:1)
at n_._getDependenciesMetadata (vendor.js:1)
at n_._getTypeMetadata (vendor.js:1)
at n_.getNgModuleMetadata (vendor.js:1)
at n_.getNgModuleSummary (vendor.js:1)
at vendor.js:1
at Array.forEach (<anonymous>)
at n_.getNgModuleMetadata (vendor.js:1)
at n_.getNgModuleSummary (vendor.js:1)
at vendor.js:1
【问题讨论】:
标签: angular build compression webpack-4