我刚刚把一个应用程序从Angular 11.2.7迁移到Angular 12,一切都运行得很好,除了当我开发和使用‘ng服务’的时候,现在的重建速度要慢得多,到了令人沮丧的地步.

我使用的是M1 iMac,使用的是 node 16.1.0.

在我移到Angular 12之前,这台机器在dev重建时速度非常快(亚秒级).现在,如果我只更改一行代码,即使我只更改控制台日志(log)中的一个字母,构建时间也是23秒,其中大约22秒被"阶段:密封"所占用.

我还注意到,现在所有的东西都是从一个小型的"主".js"即使在ng服务时.我似乎记得版本11没有这样做,但在开发过程中运行了单个未缩小的组件.也就是说,ng服务现在似乎在做一些事情,比如完整的生产构建every time I更改任何内容.我认为这是缓慢的根本原因,但我不确定.

所以

我应该在12号角继续使用‘ng serve’进行开发吗?

迁移时是否需要设置一个选项(可能是为了关闭完全缩小的重建),以保持旧的构建速度?

不管怎么说,这是什么"密封阶段"?对我来说,这听起来像是一个产品构建术语!

谢谢

约翰

推荐答案

angular cli使用v12进行了更新,使开发环境更像生产环境.

或者他们喜欢这样称呼:

这些更改的目的是降低配置的复杂性,并支持新的"默认生产构建"计划.

从他们的变化来看,你应该更新你的angular.jsonprojects.{PROJECT_NAME}.architect.build.defaultConfiguration路径:

"defaultConfiguration": "development"

阅读here多篇

如果没有使用ng update命令,而是使用npm手动更新,则需要运行migrations.具体来说,material 样式有一些更改,如果不迁移,可能会导致构建时间过长.要触发这些迁移,请运行:

ng update @angular/cli --migrate-only --from 11 --to 12

Angular相关问答推荐

tabindex on button on button in MatMenu in angular不工作

Angular 17自定义指令渲染不起作用'

如何用Effect()识别正确的Angular 信号?

带信号数据源的17角material 表

Angular 16独立依赖注入问题

元素上的Angular 管道链接不起作用

如何使用Angular 将图像作为二进制数据发送到我的API?

在以下位置升级到Angular 16 Break Sharepoint广告:This._history.replaceState不是函数

Angular 单位测试表

ngrx 效果等到从初始值以外的其他状态收到响应

Nz 树 Select .如何在子 node 中显示父 node 名称?

如何访问父组件中提供的 TemplateRef 内的服务?

包含与 ngFor 相关内容的 HTML 输入

如何处理解析器中的错误

无法绑定到matDatepicker,因为它不是 input的已知属性

Angular 4:InvalidPipeArgument:管道AsyncPipe的[object Object]

Angular 5 测试:如何获取对子组件的引用

Angular 4 Bootstrap 下拉菜单需要 Popper.js

为什么 *ngIf 不适用于 ng-template?

Firestore 从集合中获取文档 ID