angular - Hur exkluderar man en komponent från byggprocessen beroende på miljövariabel?


Jag skulle vilja exkludera en komponent från byggprocessen. Men detta bör ske baserat på en miljövariabel sparad i environment.prod.ts.

Jag har letat men hittade ingen fungerande lösning, och de flesta tips handlar om något som att lägga till exclude-egenskapen i tsconfig.app.json. Men även om detta förslag skulle fungera, kan det inte vara villkorligt baserat på en miljövariabel, eftersom detta inte är möjligt i detta scenario (tsconfig.app.json).

Exempel på hur posten i miljön kan användas:

export const environment={ production: true, buildComponentX: false/true };

Någon ledtråd eller idé om hur en sådan process skulle kunna implementeras?

Svar #1

Jag har inte testat detta, det är bara ett spår.

Eftersom dina komponenter är bundna vid kompileringstid, varför inte skapa en array som innehåller dina komponenter baserat på en fråga?

const components = [AppComponent, PublicComponent, RestrictedComponent, ProdComponent];
const componentsToExport = components.filter(component => component !== ProdComponent);
export componentsToExport;

Nu kan du i dina moduler importera denna array och sprida den :

@NgModule({
  imports: [...componentsToExport]
  // And the rest
})
export class AppModule {}