当环境中的生产设置为 true 时,“ng build”是否使用 AOT 编译?

hvs*_*vsp 5 angular2-aot angular

据我了解,在 ng build 期间,默认使用 AOT 编译,并且仅在开发(ngserve)中才需要设置 --aot 标志。

但现在我面前有一个项目,它在多个位置使用 @Angular/compiler 中的类和方法。尽管如此,“ng build”与 production: true 的结果在环境中工作没有任何失败,并且似乎知道编译器。如果我使用“ngserve --aot”,但是我会收到预期的“未捕获错误:运行时编译器未加载”。

那么到底是怎么回事呢?是否默认使用AOT。

顺便说一句:该项目使用 Angular 版本 ^4.0.0。


编辑

@Melou 和 @PierreDuc 向我展示了我错在哪里:ng build --prodng build -e prod. 环境中的生产设置不会改变编译过程。--prod还设置--target=production将触发 AOT 编译。

Pie*_*Duc 5

build默认情况下,使用该命令时不使用 AOT 。仅当您添加--prod参数时。这会将其设置--target为生产环境,启用 AOT 并禁用源映射:

# these are equivalent
ng build --target=production --environment=prod
ng build --prod --env=prod
ng build --prod
Run Code Online (Sandbox Code Playgroud)