Angular CLI构建目标与环境

Ser*_*y K 20 angular-cli angular

Angular CLI中,运行build命令时--target--environment选项之间有什么区别?

从文档:

ng build可以指定构建目标(--target = production或--target = development)和要与该构建一起使用的环境文件(--environment = dev或--environment = prod).默认情况下,使用开发构建目标和环境.

但是,他们从未真正澄清两者之间的区别.

从我可以收集的内容来看,--environment标志控制在进行构建时使用哪个环境文件(environment.tsvs environment.prod.ts).但那又有什么--target控制权呢?

小智 9

--environment是来自.angular-cli.jsonapps [0] .environments对象的键

它就像运行环境的配置文件(例如:本地,开发服务器,测试服务器,CI服务器,舞台服务器,生产服务器等).所述的值应用[0] .environments对象是与对环境的所有设置的文件名.在那里你可以设置后端端点,键和你想要的任何其他东西.然后你可以在你的代码中使用它:

import {environment} from '@environments/environment';
const userEndPoint = `${environment.apiRoot}/user/`;
Run Code Online (Sandbox Code Playgroud)

每个环境都可能是生产(environment.production === true)或非生产即开发(environment.production === false).这是一个可以使用下一个参数定义的目标:

--target是两个值的枚举:developmentproduction.它是一个'meta'标志,设置其他标志:

国旗| --dev| --prod
--- | --- | ---
--aot | false| true
--environment | dev | prod
--output-hashing | media| all
--sourcemaps | true | false
--extract-css | false| true
--named-chunks   | true | false
--build-optimizer| false| true与AOT和Angular 5

--prod还设置以下不可标记的设置:
- 如果在.angular-cli.json中配置,则添加服务工作者.
- 用生产值替换模块中的process.env.NODE_ENV(某些库需要这样做,比如反应).
- 在代码上运行UglifyJS.

来自https://github.com/angular/angular-cli/wiki/build/1cf783837c392f5fadc7286e1fb28220b9a1b507#--dev-vs---prod-builds