Webpack: Unterschiedliche (Plugin definieren) Einstellungen pro Einstiegspunkt

9

Für einige meiner Bundle-Dateien möchte ich verschiedene Versionen erstellen (zum Beispiel eine mit Admin-Funktionalität und eine ohne).

Es scheint, dass das DefinePlugin normalerweise für diese Art von Dingen verwendet wird, aber es gibt auch Loader wie die if-loader oder ifdef -loader verfügbar .

Nun besteht das Problem darin, dass sie alle eine Konfiguration unter allen Einstiegspunkten teilen. Ich würde einen Weg brauchen, um eine andere Konfiguration (wie {with_admin_mode: true} und {with_admin_mode: false} ) für die verschiedenen Einstiegspunkte festzulegen.

Ich habe zwar die Konfiguration an die Spitze der JS-Dateien des eigentlichen Einstiegspunkts gestellt, aber ich weiß nicht, wie ich eine globale Variable über alle Module hinweg korrekt erstellen kann, die als true == false erkannt und entfernt werden.

    
AndreKR 28.08.2017, 12:06
quelle

2 Antworten

0

Sehen Sie sich webpack-merge an - Smart Merging sollte helfen Sie, um Ihren Fall zu lösen.

Es kann helfen, eine dynamische Konfiguration mit bestimmten Einstiegspunkten, Plugins und was immer Sie wollen, zu machen, hängt von einer Variablen auf env ab.

Bewährte Methode, um die Konfiguration in verschiedene Dateien aufzuteilen. Sie können eine allgemeine Konfiguration mit den gleichen Dingen über alle Einstiegspunkte vornehmen, z. B. Loader, und dann benutzerdefinierte Konfigurationen für die Modi with_admin_mode und without_admin_node erstellen.

    
chuve 04.09.2017 19:58
quelle
0

Entschuldigung, ich wollte proplyPlugin schreiben, nicht definePlugin. DefinePlugin wird die Variable in Ihrem Code direkt ersetzen und keine globale erstellen.

Sie können mit providePlugin eine globale Konfigurationsvariable aus einer von Ihnen erstellten Moduldatei festlegen:

in Ihrer Webpack-Konfiguration:

%Vor%

und config werden als globale Werte für die Exporte einer config.js -Datei festgelegt.

Sie können dann auf diese global in Ihren verschiedenen Einstiegspunkten zugreifen und sie ändern. Zum Beispiel könnten Sie config.with_admin_mode = true; in entry1.js und config.with_admin_mode = false; in entry2.js machen.

Eine andere Lösung wäre, die globale Variable im Fenster direkt von Ihren Modulen aus zu setzen, z. window.with_admin_mode = true;

    
JusMalcolm 06.09.2017 19:57
quelle

Tags und Links