Angular 7: 运行 生产配置但开发模式仍然启用
Angular 7: Running with production configuration but development mode still enabled
我的 Angular 7.2.15 应用程序仍然处于开发模式,尽管设置了生产配置和 属性。
比方说,我有以下设置:
environment.ts
export const environment = {
PRODUCTION: false
};
environment.production.ts
export const environment = {
PRODUCTION: true
};
然后,运行带有“ng serve”的项目将导致:
console.log("PRODUCTION?: " + environment.PRODUCTION): FALSE
console.log("isDevMode?: " + isDevMode()): TRUE
这是正确的。
但是 运行 使用“ng serve --configuration=production”会导致:
console.log("PRODUCTION?: " + environment.PRODUCTION): TRUE
console.log("isDevMode?: " + isDevMode()): TRUE
浏览器控制台显示:“Angular 运行 处于开发模式。调用 enableProdMode() 以启用生产模式。”
将“ng build”与上述选项一起使用时也会发生同样的情况。
Angular 文档说:
--prod=true: shorthand for "--configuration=production". When true, sets the build configuration to the production target.
--configuration=configuration: A named build target, as specified in the "configurations" section of angular.json. Each named target is accompanied by a configuration of option defaults for that target. Setting this explicitly overrides the "--prod" flag
另外验证并添加“--prod”不会改变任何结果。
并根据此post(旧Angular版本;)和environment.ts的交互,生产属性,--配置,-- -prod 和 enableProdMode(),我应该可以使用我的配置。
应该不需要调用 enableProdMode()。
angular.json:
...
"configurations": {
"production": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.production.ts"
}
],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"budgets": [
{
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "5mb"
}
]
}
}
...
那么,为什么开发模式仍然启用?
验证您的 angular.json 具有以下生产配置:
"configurations": {
"production": {
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
]
}
}
@AndrewAllen @Shikha
当然我没有包括在内:D
当我解释文档时,只有一条语句 (environment.production = true) 就足够了:
https://angular.io/cli/build:当您使用 CLI 创建项目时,默认情况下会创建 "A "production" 配置,您可以通过指定 --configuration=[=20= 来使用该配置] 或 --prod="true" 选项。
他们最好在那里提到加载产品配置不会同时将应用程序设置为生产模式...啊啊Angular。
非常感谢!
我的 Angular 7.2.15 应用程序仍然处于开发模式,尽管设置了生产配置和 属性。
比方说,我有以下设置:
environment.ts
export const environment = {
PRODUCTION: false
};
environment.production.ts
export const environment = {
PRODUCTION: true
};
然后,运行带有“ng serve”的项目将导致:
console.log("PRODUCTION?: " + environment.PRODUCTION): FALSE
console.log("isDevMode?: " + isDevMode()): TRUE
这是正确的。
但是 运行 使用“ng serve --configuration=production”会导致:
console.log("PRODUCTION?: " + environment.PRODUCTION): TRUE
console.log("isDevMode?: " + isDevMode()): TRUE
浏览器控制台显示:“Angular 运行 处于开发模式。调用 enableProdMode() 以启用生产模式。”
将“ng build”与上述选项一起使用时也会发生同样的情况。
Angular 文档说:
--prod=true: shorthand for "--configuration=production". When true, sets the build configuration to the production target.
--configuration=configuration: A named build target, as specified in the "configurations" section of angular.json. Each named target is accompanied by a configuration of option defaults for that target. Setting this explicitly overrides the "--prod" flag
另外验证并添加“--prod”不会改变任何结果。
并根据此post(旧Angular版本;
angular.json:
...
"configurations": {
"production": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.production.ts"
}
],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"budgets": [
{
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "5mb"
}
]
}
}
...
那么,为什么开发模式仍然启用?
验证您的 angular.json 具有以下生产配置:
"configurations": {
"production": {
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
]
}
}
@AndrewAllen @Shikha 当然我没有包括在内:D 当我解释文档时,只有一条语句 (environment.production = true) 就足够了: https://angular.io/cli/build:当您使用 CLI 创建项目时,默认情况下会创建 "A "production" 配置,您可以通过指定 --configuration=[=20= 来使用该配置] 或 --prod="true" 选项。
他们最好在那里提到加载产品配置不会同时将应用程序设置为生产模式...啊啊Angular。
非常感谢!