הסרת `@ngrx/store-devtools` בסביבת production
פורסם בתאריך 30 באוקטובר 2023
This video explains the best practice of removing @ngrx/store-devtools in production environments to optimize application performance, along with practical steps to implement this effectively.
בסביבת production עליך להסיר את @ngrx/store-devtools
מה - bundle.
נראה דוגמא:
יצירת אפליקציה Angular חדשה
Section titled “יצירת אפליקציה Angular חדשה”npx @angular/cli@latest new ngrx-remove-devtools --style css --routing false --minimal
התקנת @ngrx/store
ו @ngrx/store-devtools
Section titled “התקנת @ngrx/store ו @ngrx/store-devtools”cd ngrx-remove-devtoolsnpx ng add @ngrx/store --skip-confirmationnpx ng add @ngrx/store-devtools@latest --skip-confirmation
אכלוס ה state
Section titled “אכלוס ה state”@NgModule({ declarations: [AppComponent], imports: [ BrowserModule, StoreModule.forRoot( { counter: () => 0, }, {} ), StoreDevtoolsModule.instrument({maxAge: 25, logOnly: !isDevMode()}), ], providers: [], bootstrap: [AppComponent],})export class AppModule {}
בחינת ה state
Section titled “בחינת ה state”במידה והתקנתם את Redux dev tools תוכלו לבחון את ה state שלכם.
ng serve
בעיה בבדיקת ה state בסביבת production
Section titled “בעיה בבדיקת ה state בסביבת production”מומלץ להשבית את redux dev tools בסביבת production.
npx ng buildcd dist/ngrx-remove-devtoolsnpx http-server
redux dev tools עדיין עובד ב production
פתרון 1
Section titled “פתרון 1”הסר את StoreDevtoolsModule.instrument
מה imports בסביבת production.
npx ng generate environments
הוסיפו מפתח production
לקובץ הסביבות:
export const environment = { production: false,};
export const environment = { production: true,};
import {environment} from '../environments/environment';
@NgModule({ declarations: [AppComponent], imports: [ BrowserModule, StoreModule.forRoot( { counter: () => 0, }, {} ), !environment.production ? StoreDevtoolsModule.instrument({maxAge: 25, logOnly: !isDevMode()}) : [], ], providers: [], bootstrap: [AppComponent],})export class AppModule {}
@ngrx/store-devtools
עדיין ב bundle.
npx ng build --source-mapnpx source-map-explorer dist/ngrx-remove-devtools/main.4a92d461e97ce051.js
@ngrx/store-devtools
עדיין מוסיף כ - 16kb
של קוד ל bundle שלך.
החלפה ב app.module.ts
Section titled “החלפה ב app.module.ts”ניתן להשיג את אותו תוצאה עם fileReplacement
.
import {BrowserModule} from '@angular/platform-browser';import {StoreModule} from '@ngrx/store';
export const commonImports = [ BrowserModule, StoreModule.forRoot( { counter: () => 0, }, {} ),];
import {StoreDevtoolsModule} from '@ngrx/store-devtools';import {commonImports} from './imports.common';import {isDevMode} from '@angular/core';
export const imports = [ ...commonImports, StoreDevtoolsModule.instrument({maxAge: 25, logOnly: !isDevMode()})];
import {commonImports} from './imports.common';
export const imports = [...commonImports];
import {NgModule} from '@angular/core';import {AppComponent} from './app.component';import {imports} from './imports';
@NgModule({ declarations: [AppComponent], imports: [...imports], providers: [], bootstrap: [AppComponent],})export class AppModule {}
התוצאה היא הסרה של @ngrx/store-devtools
מה - bundle.