14

我最近从 Angular v5.2.4 与 Angular-CLI v1.7.4 合作升级到 Angular v6.0.3 与 Angular-CLI v6.0.8 合作。

由于使用了动态组件,我的项目需要 JIT 编译器。因此,我的构建脚本曾经是:ng build --prod --no-aot.

我需要继续使用该--prod标志来保留摇树、代码缩小和死代码消除的好处。但是,默认情况下--prod启用 AOT。该--no-aot选项曾经是禁用 AOT 的解决方案,但仍然可以获得--prod构建的好处。

我尝试了以下选项,您可以看到没有成功构建(标准--prod构建除外)。我也没有从 CLI 获得任何信息,这也不是很有帮助:

在此处输入图像描述

我已经阅读了Official Angular Deployment Docs以及Official Angular-CLI build Wiki并没有找到任何信息来帮助解决这个问题。

有谁知道选项的替代品是什么,或者在禁用 AOT 的同时--no-aot进行构建的新方法?--prod

4

3 回答 3

25

要从命令行执行此操作,请使用以下选项和--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,您将获得一个不包含aotandbuild-optimizer选项的生产版本。

不推荐使用--prod构建选项。下面在更新的命令中。

ng b -c production --aot=false --build-optimizer=false
于 2018-06-19T22:05:36.020 回答
2

你可以试试这个:

ng build --prod --aot=false --build-optimizer=false
于 2019-11-19T06:46:59.247 回答
0

在 .npmrc 文件中

legacy-peer-deps = true

命令提示符

npm install 

或者

npm config set legacy-peer-deps true
npm install
于 2021-07-30T11:03:09.393 回答