尽管设置了生产配置和属性,但我的 Angular 7.2.15 应用程序仍处于开发模式。
比方说,我有以下设置:
环境.ts
export const environment = {
PRODUCTION: false
};
环境.生产.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”时也会发生同样的情况。
角度文档说:
--prod=true:“--configuration=production”的简写。如果为 true,则将构建配置设置为生产目标。
--configuration=configuration:命名的构建目标,在 angular.json 的“configurations”部分中指定。每个命名的目标都伴随着该目标的选项默认配置。显式设置它会覆盖“--prod”标志
此外,验证这一点并添加“--prod”不会改变任何结果。
根据这篇文章(旧 Angular 版本;https: //stackoverflow.com/a/44782202/5446400)和 environment.ts、生产属性、--configuration、--prod 和 enableProdMode() 的交互,我应该很好配合我的配置。应该不需要调用 enableProdMode()。
角.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"
}
]
}
}
...
那么,为什么仍然启用开发模式?