2016-04-12 10 views
2

Ich bin auf der Suche nach einer Lösung für den dynamischen Import von Modulen in JS-react-Komponenten basierend auf Parametern aus einer Webpack-Konfiguration.Module dynamisch importieren basierend auf webpack config oder cli params

Damit THEME_PATH von import ./theme/{THEME_NAME}/indes.less

Würde dynamisch durch einen webpack param oder CLI-Parameter auf webpack Build ersetzt werden.

Irgendwelche Vorschläge oder Hinweise zur Lösung?

Antwort

4

Es ist möglich, mit DefinePlugin:

webpack config:

plugins: [ 
     ... 
     new webpack.DefinePlugin({ 
      __THEME__: '"' + process.env.THEME.toString() + '"' 
     }) 
    ] 

und in Ihrem Code:

require('./theme/' + __THEME__ + '/index.less') 

können Sie passieren THEMEin this way (auf Ihrem OS hängt und Schale).

Sie können auch Prameter von cli statt process.env übergeben.


Wenn Sie Thema in weniger Datei, nicht js importieren:

weniger Datei:

@import "theme/@{THEME}/index.less"; 

webpack config (weniger-loader):

'!less?{"modifyVars":{"THEME":"' + process.env.THEME + '"}}' 
+1

Groß. Das hat mein Problem gelöst. Eine zusätzliche Anmerkung dazu ist, dass erfordern ('./Theme /' + __THEME__ + '/index.less') funktioniert gut aber importieren '../theme/' + __THEME__ + '/index.less' wird scheitern –

+0

Danke! Ist das auch mit 'Import'-Syntax möglich? Ich benutze 'import' überall und würde' require' nur an einem einzigen Ort verwenden müssen. – szimek

+0

Sie können 'Import' nicht mit Variablen verwenden, daher ist dies nicht möglich. –

Verwandte Themen