Angular6如何实现更快速的编译
我们的一个大型项目使用Angular6.1,在服务器(CentOS7.4 8C/32G)上,使用命令node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng build --prod --build--optimizer --base-href /project/编译大概35-40分钟之间,后来增大max_old_space_size配置,改用命令node --max_old_space_size=100000000 --max_semi_space_size=200000000 ./node_modules/@angular/cli/bin/ng build --prod --build--optimizer --base-href /project/,编译减少10分钟,再增大也没有效果。请问如何配置能实现更快速的编译?
可以看一下下面两个讨论: Improving production build time for Angular 7 application Build with "ng -prod" is extremely slow
我之前在项目上用node --max_old_space_size=10400 ./node_modules/@angular/cli/bin/ng build --prod --aot --buildOptimizer=false可以减少一半的编译时间(从 13 分钟减少到 6 分钟)。
如果你要再去提高编译速度,除非ng eject后自己配 webpack,不然我没有看到太好的办法(你看上面第二个讨论,从 ng4 讨论到 ng7,这个问题也算老大难了吧)。
按照webpack的套路来说,就是引用dllplugin,换成angular来说,是不是应该将部分分割,变成一个一个的子包(ng g library),然后分别编译,毕竟不一定每一次变动都是修改所有文件,这样的话只有一部分代码(某几个包)会重新编译,速度应该会快把 没试过(没参与过那么大的项目..........),纯理论猜测
有一种可能影响打包时间的可能就是摇树把,项目越写越大,有些代码废弃但是没删除,构建时这些废弃代码最终会被扔到,但是也要花大量时间 还有一种是循环依赖+废弃代码.........
@wszgrcy 按照你第一个想法,其实应该从架构上对项目进行微前端化,比如有一个Portal负责项目的系统级公共支持,各个子项目提供不同的业务模块。如果只是ng g library,大型项目中一般有很多相互依赖的地方,感觉拆到最后,还是避免不了变成一个微前端项目