2016-09-29 1 views
0

Ich bin ein webpack Server mit env Variable ausgeführt wird, und Testumgebung zeigt meine Build-Umgebung:Wie injiziert man einige js in das Webpack nur wenn eine Bedingung übereinstimmt?

var environment = process.env.environment == null ? "development" : process.env.environment 

Wie kann ich einige js in die Build hinzufügen zu diesem environment Wert abhängig? Ich will nicht, wie hässlich Zeug mit DefinePlugin und dann Dinge schreiben:

aus
if (NODE_ENV="test") { 
    import { "my_polyfill" } 
} 

Antwort

0

prüfen node-config

  1. erstellen default.js die Ihre dev webpack config enthält.
  2. erstellen production.js mit den zusätzlichen Konfigurations über die default.js

standardmäßig node-config die default.js und liefert es zu webpack holen.

Wenn Sie NODE_ENV=production einstellen, wählt es production.js und führt eine Object.assign({}, default, production) aus und stellt sie dem Webpack zur Verfügung.

Auf diese Weise können Sie die Anzahl der env Config für Webpack verwalten.

Hopp es hilft!

[UPDATE]

ein Beispiel Hinzufügen von Fall zu demonstrieren ...

erstellen config/default.js in der Wurzel Ihres Projekts

export default { 
    entry: ['./foo/bar', './foo1/bar1'], 
    output: { 
    path: path.resolve('./build/js'), 
    filename: '[name].js', 
    publicPath: '/js/' 
    }, 
} 

config/production.js erstellen in der Wurzel von Ihrem Projekt

export default { 
     entry: ['./foo/bar', './foo1/bar1', './new/entry'], //adding the new entry 
     plugins: [ 
     new webpack.optimize.UglifyJsPlugin({ 
     compress: { 
     warnings: false, 
     }, 
     }), 
     ], 
    } 

erstellen webpack.config.babel.js in der Wurzel Ihres Projekts

import config from 'config' //I'm using ES6 style. You can use require also 

export default config.default //export the config based on the NODE_ENV 

Zeit anzeigen

webpack --progress --colors 
default.js as the config 

In diesem Fall Knoten-config die

NODE_ENV=production 
webpack --progress --colors 
zurückkehren

In diesem Fall nimmt node-config sowohl default.js als auch production.js und überschreibt default.js (hier werden die Einträge und die Plugins der production.js in default.js überschrieben) und es wird ein Objekt mit {entries (von production.js), Ausgabe (von default.js), Plugins (von production.js)}, die eine Object.assign() Operation ist.

Zurück zu default.js.Sie müssen den NODE_ENV

NODE_ENV= 

YOV müssen möglicherweise verwenden export oder exports während NODE_ENV tun auf der Grundlage Ihrer OS Hoffe, es hilft

+0

Könnten Sie mir zeigen, ein funktionsfähiges Beispiel bitte zurücksetzen? Was soll ich mit "Object.assign" tun? – asiniy

+0

@asiniy Sie müssen nichts mit Object.assign() tun. node-config kümmert sich darum. Ich füge die Beispiele etwas hinzu. –

+0

Was meinst du mit 'inject'? Fügen Sie zusätzliche Einträge hinzu, die auf dem 'env' basieren? –

Verwandte Themen