--environment
is a key for the apps[0].environments object from .angular-cli.json
It is like a profile for the running environment (for example: local, development server, test server, CI server, stage server, production server and so on). The value of the apps[0].environments object is a file name with all settings for the environment. There you could set up backend endpoint, keys and whatever else you want. Then you could use it inside your code:
import {environment} from '@environments/environment';
const userEndPoint = `${environment.apiRoot}/user/`;
Every environment could be production (environment.production === true) or non production i.e. development (environment.production === false). This is a target which could be defined also with the next parameter:
--target
is a enum of two values: development
or production
. It is a 'meta' flags, that set other flags:
Flag | --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
with AOT and Angular 5
--prod also sets the following non-flaggable settings:
- Adds service worker if configured in .angular-cli.json.
- Replaces process.env.NODE_ENV in modules with the production value (this is needed for some libraries, like react).
- Runs UglifyJS on the code.
from https://github.com/angular/angular-cli/wiki/build/1cf783837c392f5fadc7286e1fb28220b9a1b507#--dev-vs---prod-builds
--dev
vs.--prod
builds? It explains exactly that with a table comparing their settings, plus a list of the non-flaggable production settings. – jonrsharpetarget
flag does not directly affect anything about the build process, and is rather just a shortcut for setting other flags which do? Further, while you can define additional environments, you cannot define additional targets (there's only the built-in onesdev
andprod
)? – Sergey K