@ ngrx / store-devtools для производственного режима

Я использую инструменты @ ngrx / store-devtools с расширением Chrome.

Есть ли смысл отключать его для продакшена?


person ilyabasiuk    schedule 28.12.2016    source источник


Ответы (2)


Вы можете просто не импортировать его в свой NgModule, когда находитесь в рабочем режиме, сделав что-то вроде этого:

import { StoreDevtoolsModule } from '@ngrx/store-devtools';

let dev = [
  StoreDevtoolsModule.instrumentOnlyWithExtension()
];
if (environment.production) {
  dev = [];
  enableProdMode();
}

@NgModule({
  imports: [
    StoreModule.provideStore(rootReducer),
    ...dev
  ]
})
export class AppModule {}
person cartant    schedule 28.12.2016
comment
Но есть ли в этом смысл? - person ilyabasiuk; 30.12.2016
comment
Чтобы не импортировать его в NgModule в производственных средах? Думаю, в этом есть смысл, так как это фактически отключит его. - person cartant; 30.12.2016

Исходный принятый ответ оставляет код store-devtools в производственной сборке, хотя он никогда не используется.

Чтобы полностью удалить store-devtools из производственной сборки и при этом сохранить размер пакета:

Создать папку src/app/build-specifics

Создайте файл index.ts

import { StoreDevtoolsModule } from '@ngrx/store-devtools';
export buildSpecificModules = [StoreDevtoolsModule.instrument({maxAge: 25})];

Создайте файл index.prod.ts

export buildSpecificModules = [];

В angular.json добавьте связанные файлы замены. Это заменит src / app / build-specificics / index.ts в производственных сборках на index.prod.ts, таким образом удалив store-devtools из производственной сборки.

"production": {
    "optimization": true,
    "outputHashing": "all",
    "sourceMap": false,
    "extractCss": true,
    "namedChunks": false,
    "aot": true,
    "extractLicenses": true,
    "vendorChunk": false,
    "buildOptimizer": true,
    "serviceWorker": true,
    "ngswConfigPath": "src/ngsw-config.json",
    "fileReplacements": [
        {
            "replace": "src/environments/environment.ts",
            "with": "src/environments/environment.prod.ts"
        },
        {
            "replace": "src/app/build-specifics/index.ts",
            "with": "src/app/build-specifics/index.prod.ts"
        }
    ]
}

В app.module.ts включите файл по умолчанию, как и в случае с окружением, angular.json fileReplacements изменит фактический включенный файл при создании приложения.

import { buildSpecificModules } from './build-specifics';

@NgModule({
  imports: [
    StoreModule.provideStore(rootReducer),
    ...buildSpecificModules
  ]
})
export class AppModule {}
person MTJ    schedule 21.01.2019
comment
Отлично, это должен быть принятый ответ, полностью удаляет его из производственного пакета - person el-davo; 18.09.2019
comment
Согласитесь, это отлично! Благодарность! - person adriancho5692; 24.02.2021