Angular 7: работает с производственной конфигурацией, но режим разработки все еще включен - PullRequest
0 голосов
/ 11 октября 2019

Мое приложение 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 "с указанным выше параметром.

В угловых документах говорится:

- prod = true: сокращение для"--configuration = производство". Если задано значение true, задает конфигурацию сборки для производственной цели.

- configuration = configuration: Именованная цель сборки, как указано в разделе «конфигурации» angular.json. Каждая именованная цель сопровождается настройкой параметров по умолчанию для этой цели. Установка этого значения в явном виде отменяет флаг «--prod»

. Дополнительная проверка и добавление «--prod» ничего не изменяет.

И согласно этому сообщению (старая версия Angular; https://stackoverflow.com/a/44782202/5446400) и взаимодействие environment.ts, производственное свойство, --configuration, --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"
                }
              ]
            }
          }
...

Итак, почему режим разработки по-прежнему включен?

Ответы [ 2 ]

0 голосов
/ 11 октября 2019

@ AndrewAllen @Shikha Конечно, я не включил его: D Когда я интерпретировал документацию, достаточно иметь одно утверждение (environment.production = true): https://angular.io/cli/build: Конфигурация "A" являетсясоздается по умолчанию при использовании интерфейса командной строки для создания проекта , и вы можете использовать эту конфигурацию, указав параметр --configuration = "production" или --prod = "true".

Им лучше упомянуть, что загрузка конфигурации prod также не переводит приложение в рабочий режим ... Аааа Angular.

Большое спасибо!

0 голосов
/ 11 октября 2019

Убедитесь, что ваш 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"
                }
              ]
            }
          }
...