我最近从与Angular-CLI v1.7.4合作的Angular v5.2.4升级到了与Angular-CLI v6.0.8合作的Angular v6.0.3。
由于使用动态组件,我的项目需要JIT编译器。结果,我的构建脚本曾经是:ng build --prod --no-aot
。
我需要继续使用--prod
标志来保留树摇动,代码最小化和无效代码消除的好处。但是,默认情况下,--prod
启用AOT。 --no-aot
选项曾经是禁用AOT的解决方案,但仍然获得了--prod
构建的好处。
我尝试了以下选项,并且您可以看到没有成功的构建(标准--prod
构建除外)。我也没有从CLI返回任何信息,这不是很有帮助:
我已经阅读了Official Angular Deployment Docs和Official Angular-CLI build Wiki,但没有找到有助于解决此问题的任何信息。
有人知道--no-aot
选项的替代品是什么,还是在禁用AOT的同时进行--prod
构建的新方法?
答案 0 :(得分:10)
要从命令行执行此操作,请将以下选项与--prod
选项一起使用。
--aot=false --build-optimizer=false
完整的命令:
ng b --prod --aot=false --build-optimizer=false
如果您不想每次都在命令行上执行此操作,则可以在 angular.json 中更改生产构建选项。
在文件中的以下路径
projects/your-project/achitect/build/configurations/production
将aot
和buildOptimizer
选项更改为false
。然后,您只需从命令行运行ng b --prod
,您将获得一个不包含aot
和build-optimizer
选项的生产版本。
感谢JB和Jon!
答案 1 :(得分:0)
您可以尝试以下方法:
ng build --prod --aot=false --build-optimizer=false
答案 2 :(得分:0)
在 .npmrc 文件中
legacy-peer-deps true
命令提示符
npm install
或
npm config set --legacy-peer-deps=true
npm install