Angular 6.7生产构建耗时超90分钟,求优化方案
缩短Angular 6.7生产构建时间的优化方案
一、模块与代码结构优化
- 启用懒加载:将80余个模块拆分按需加载的特性模块,路由配置中使用
loadChildren避免一次性编译所有模块:const routes: Routes = [ { path: 'transaction', loadChildren: './transaction/transaction.module#TransactionModule' } ]; - 清理冗余代码:删除未使用的组件、指令、服务,以及
package.json中无依赖的包,缩小编译范围。 - 共享模块复用:把通用组件、管道抽离到共享模块,避免重复编译相同代码片段。
二、调整Angular CLI构建参数
- 禁用非必要编译项:如果不需要生产环境源码映射,关闭
sourceMap减少编译耗时:node --max_old_space_size=16384 ./node_modules/@angular/cli/bin/ng build --prod --sourceMap=false - 启用并行构建:利用多核CPU并行编译模块,命令添加
--parallel=true:node --max_old_space_size=16384 ./node_modules/@angular/cli/bin/ng build --prod --parallel=true - 优化chunk拆分:确保
buildOptimizer开启(默认开启),添加--vendorChunk=true拆分第三方依赖chunk,避免重复打包。
三、第三方依赖优化
- 确保依赖支持Tree Shaking:选择带有
module字段的ES6模块格式依赖,让Angular CLI自动移除未使用代码。 - 替换大体积依赖:用轻量级库替代重依赖,比如用
date-fns替代moment.js,用按需引入的组件库替代全量库。 - 缓存依赖版本:使用
npm ci替代npm install,保证依赖版本一致,减少依赖安装和解析耗时。
四、硬件与环境优化
- 提升硬件配置:增加CPU核心数(构建为CPU密集型任务),保持当前
max_old_space_size的内存配置即可。 - 使用SSD存储:大幅提升文件读写速度,减少编译过程中的IO等待时间。
- 释放系统资源:关闭后台无关进程,让构建进程获得更多CPU和内存配额。
五、增量构建与CI/CD优化
- 开启增量编译:在
angular.json中配置"incremental": true,仅编译修改过的模块,后续构建耗时显著降低。 - 拆分CI/CD任务:将lint、测试、构建拆分为独立并行任务,避免串行等待。
- 缓存构建产物:在CI/CD环境中缓存
node_modules和Angular CLI缓存目录,避免每次从头构建。
内容的提问来源于stack exchange,提问作者Manoj Sr Associate Developer
相关产品推荐
相关产品推荐

