2016-04-21 14 views
2

Ich habe webpack Config mit mehreren Einträgen:Wie verwendet man mehrere Einträge im Webpack mit Karma?

entry: { 
    'js/app': ['./css/app/style.scss', './js/app/index.js'], 
    'js/vendor': ['./js/vendor/index.js', './css/vendor/index.css'], 
    'js/snippets': './js/snippets/index.js' 
}, 

und ich will nicht alle diese Pfade in Karma config codieren. sind nur webpack config und verbinden alle Einträge von dort:

var webpackConfig = require('./webpack.config'); 
... 
... 
files: webpackConfig.entry, 

aber file Option erwartet einen Array von Strings zu haben. Gibt es eine fertige Lösung dafür? Das Objekt nicht manuell in ein Array konvertieren.

Antwort

3

Ich habe eine ähnliche Einrichtung, hier ist, was für mich gearbeitet hat. In der Karma-Konfigurationsdatei konfigurieren Sie für die Dateien nur Ihre Tests. Für mich war es so etwas wie dieses:

files: [ 
    './scripts/vendor/jquery.min.js', 
    // any other global dependency 
    './scripts/**/*.spec.js' 
] 

bearbeiten

Wegen, wie webpack funktioniert, brauchen Sie nicht Ihre Projektdateien in der Karma-Konfiguration hinzuzufügen. Allein durch die Tatsache, dass Ihr Test die Test-Subjekt-Datei importiert/benötigt, wird Webpack sie bündeln und der Test wird ausgeführt.

EndEdit

Dann im Preprozessoren Abschnitt:

preprocessors: { 
    './scripts/**/*.spec.js': ['webpack'] 
}, 

Schließlich habe ich die webpack Konfiguration importiert:

const webpackConfig = require('./webpack.config.js'); 

Und mit dem karma-webpack Plugin ich einen webpack Abschnitt hinzugefügt wie folgt:

webpack: { 
    devtool: webpackConfig.devtool, 
    resolve: webpackConfig.resolve, 
    module: webpackConfig.module, 
    externals: Object.assign({}, webpackConfig.externals, { 
    chai: 'chai' 
    }) 
}, 
+0

und wie enthalten Sie Projektdateien/Build? –

+0

Ich stelle mir vor, dass Sie in Ihren Tests die Projektdateien importieren/benötigen, also wird webpack dafür sorgen. – vintem

+0

Ich habe meine Antwort aktualisiert – vintem

Verwandte Themen