I am now reading the angular4 doc, and noticed, there is one folder, environments, and under which, there are multiple environment files, such as environment.ts, environment
Assuming the environment.ts file exports, for example, a constant named environment, then first you import the constant (using the appropriate path):
import { environment } from '../environment';
Then in code you just use the constant:
let mything = environment.mything;
If you are using CLI then in
.angular-cli.jsonfile, place this code. (From angular 6 onward,.angular-cli.jsonfile is renamed to.angular.json)
"environments": {
"dev": "environments/environment.ts",
"prod": "environments/environment.prod.ts"
}
In dev environment file, you can write
export const environment = {
production: false,
url: 'http://something.com'
};
And in prod environment file, you can write
export const environment = {
production: true,
url: 'http://something.com'
}
In components or services, you can use like
import {environment} from '../../environments/environment';
environment.url;
You can command:
ng serve --dev // Or
ng serve --prod
Note: you should have environments directory directly in app directory and both environment files should be there.
Check out envsub for an easy way to build your configuration file src/environments/environment.ts by substituting environment variables into a handlebars template file src/environments/environment.hbs using a package called envsub.
Make sure to delete the environments key from .angular-cli.json.
As an example, the content of src/environments/environment.hbs could be something like:
export const environment = {
production: ${ MYAPP_PRODUCTION }
};
To substitute MYAPP_PRODUCTION with false run the following from the terminal.
MYAPP_PRODUCTION=false envsub src/environments/environment.hbs src/environments/environment.ts
The resulting file src/environments/environment.ts will be
export const environment = {
production: false
};
You can add an additional script to package.json to build your configuration file.
"scripts": {
"config": "envsub src/environments/environment.hbs src/environments/environment.ts",
}
Build your configuration by running something like the following in your terminal:
MYVAR=test npm run config
Remember to exclude src/environments/environment.ts from version control. For git you can use a .gitignore file.