1

尽管设置了生产配置和属性,但我的 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"
                }
              ]
            }
          }
...

那么,为什么仍然启用开发模式?

4

2 回答 2

1

验证您的 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"
                }
              ]
            }
          }
于 2019-10-11T14:06:57.697 回答
1

@AndrewAllen @Shikha 当然我没有包含它:D 当我解释文档时,只有一个语句(environment.production = true)就足够了: https ://angular.io/cli/build :“A”生产" 使用 CLI 创建项目时会默认创建配置,您可以通过指定 --configuration="production" 或 --prod="true" 选项来使用该配置。

他们应该在那里更好地提及加载产品配置并不会将应用程序设置为生产模式......啊啊啊 Angular。

非常感谢你!

于 2019-10-11T14:45:18.570 回答