mirror of
https://github.com/angular/angular-cli.git
synced 2025-05-17 19:13:34 +08:00
feat(@angular/cli): use environmentSource key for environments (#4705)
Heavily based on @jsanchezgarcia work in #4476. Fix #3857 BREAKING CHANGE: A new environmentSource entry replaces the previous source entry inside environments. To migrate the code follow the example below: Before: ``` "environments": { "source": "environments/environment.ts", "dev": "environments/environment.ts", "prod": "environments/environment.prod.ts" } ``` After: ``` "environmentSource": "environments/environment.ts", "environments": { "dev": "environments/environment.ts", "prod": "environments/environment.prod.ts" } ```
This commit is contained in:
parent
862c163e62
commit
16bfdf0123
@ -22,8 +22,8 @@ By default, the development build target and environment are used.
|
|||||||
The mapping used to determine which environment file is used can be found in `.angular-cli.json`:
|
The mapping used to determine which environment file is used can be found in `.angular-cli.json`:
|
||||||
|
|
||||||
```json
|
```json
|
||||||
|
"environmentSource": "environments/environment.ts",
|
||||||
"environments": {
|
"environments": {
|
||||||
"source": "environments/environment.ts",
|
|
||||||
"dev": "environments/environment.ts",
|
"dev": "environments/environment.ts",
|
||||||
"prod": "environments/environment.prod.ts"
|
"prod": "environments/environment.prod.ts"
|
||||||
}
|
}
|
||||||
|
@ -22,8 +22,8 @@
|
|||||||
"styles.<%= styleExt %>"
|
"styles.<%= styleExt %>"
|
||||||
],
|
],
|
||||||
"scripts": [],
|
"scripts": [],
|
||||||
|
"environmentSource": "environments/environment.ts",
|
||||||
"environments": {
|
"environments": {
|
||||||
"source": "environments/environment.ts",
|
|
||||||
"dev": "environments/environment.ts",
|
"dev": "environments/environment.ts",
|
||||||
"prod": "environments/environment.prod.ts"
|
"prod": "environments/environment.prod.ts"
|
||||||
}
|
}
|
||||||
|
@ -147,6 +147,10 @@
|
|||||||
},
|
},
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
},
|
},
|
||||||
|
"environmentSource":{
|
||||||
|
"description": "Source file for environment config.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
"environments": {
|
"environments": {
|
||||||
"description": "Name and corresponding file for environment config.",
|
"description": "Name and corresponding file for environment config.",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
|
@ -103,7 +103,7 @@ const getTestConfig = function (projectRoot, environment, appConfig, testConfig)
|
|||||||
// This plugin is responsible for swapping the environment files.
|
// This plugin is responsible for swapping the environment files.
|
||||||
// Since it takes a RegExp as first parameter, we need to escape the path.
|
// Since it takes a RegExp as first parameter, we need to escape the path.
|
||||||
// See https://webpack.github.io/docs/list-of-plugins.html#normalmodulereplacementplugin
|
// See https://webpack.github.io/docs/list-of-plugins.html#normalmodulereplacementplugin
|
||||||
new RegExp(path.resolve(appRoot, appConfig.environments['source'])
|
new RegExp(path.resolve(appRoot, appConfig.environmentSource)
|
||||||
.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&')),
|
.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&')),
|
||||||
path.resolve(appRoot, appConfig.environments[environment])
|
path.resolve(appRoot, appConfig.environments[environment])
|
||||||
),
|
),
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
|
import { stripIndent } from 'common-tags';
|
||||||
import {AotPlugin, AotPluginOptions} from '@ngtools/webpack';
|
import {AotPlugin, AotPluginOptions} from '@ngtools/webpack';
|
||||||
import { WebpackConfigOptions } from '../webpack-config';
|
import { WebpackConfigOptions } from '../webpack-config';
|
||||||
|
|
||||||
@ -19,15 +20,43 @@ function _createAotPlugin(wco: WebpackConfigOptions, options: any) {
|
|||||||
let hostOverrideFileSystem: any = {};
|
let hostOverrideFileSystem: any = {};
|
||||||
// process environment file replacement
|
// process environment file replacement
|
||||||
if (appConfig.environments) {
|
if (appConfig.environments) {
|
||||||
if (!('source' in appConfig.environments)) {
|
if (!appConfig.environmentSource) {
|
||||||
throw new SilentError(`Environment configuration does not contain "source" entry.`);
|
let migrationMessage = '';
|
||||||
|
if ('source' in appConfig.environments) {
|
||||||
|
migrationMessage = '\n\n' + stripIndent`
|
||||||
|
A new environmentSource entry replaces the previous source entry inside environments.
|
||||||
|
|
||||||
|
To migrate angular-cli.json follow the example below:
|
||||||
|
|
||||||
|
Before:
|
||||||
|
|
||||||
|
"environments": {
|
||||||
|
"source": "environments/environment.ts",
|
||||||
|
"dev": "environments/environment.ts",
|
||||||
|
"prod": "environments/environment.prod.ts"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
After:
|
||||||
|
|
||||||
|
"environmentSource": "environments/environment.ts",
|
||||||
|
"environments": {
|
||||||
|
"dev": "environments/environment.ts",
|
||||||
|
"prod": "environments/environment.prod.ts"
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
throw new SilentError(
|
||||||
|
`Environment configuration does not contain "environmentSource" entry.${migrationMessage}`
|
||||||
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
if (!(buildOptions.environment in appConfig.environments)) {
|
if (!(buildOptions.environment in appConfig.environments)) {
|
||||||
throw new SilentError(`Environment "${buildOptions.environment}" does not exist.`);
|
throw new SilentError(`Environment "${buildOptions.environment}" does not exist.`);
|
||||||
}
|
}
|
||||||
|
|
||||||
const appRoot = path.resolve(projectRoot, appConfig.root);
|
const appRoot = path.resolve(projectRoot, appConfig.root);
|
||||||
const sourcePath = appConfig.environments['source'];
|
const sourcePath = appConfig.environmentSource;
|
||||||
const envFile = appConfig.environments[buildOptions.environment];
|
const envFile = appConfig.environments[buildOptions.environment];
|
||||||
const environmentContent = fs.readFileSync(path.join(appRoot, envFile)).toString();
|
const environmentContent = fs.readFileSync(path.join(appRoot, envFile)).toString();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user