2016-04-21 3 views
2

Ich muss eine JavaScript-Funktion ausführen, bevor das Webpack seinen Erstellungsprozess startet. Die Funktion benötigt nur .scss Dateien und verkettet sie zu einem.WebPack-Ausführungsfunktion vor dem Start von Build

Danach sollte Webpack die Ergebnisdatei übernehmen. Gibt es eine Option, das zu tun?

Im Moment laufe ich die Funktion vor der module.exports in webpack.config.js, aber es scheint, dass es nicht synchron Betrieb ist. Module.exports werden ausgeführt, bevor die concat()-Funktion endet und Webpack die .scss-Datei nicht finden kann.

function concat(opts) { 
    (...) 
} 

concat({ src : styles, dest : './css/style.scss' }); 

module.exports = [ 
    (...) 
] 

Antwort

7

Es scheint ein wenig seltsam SCSS Dateien verketten vor Webpack als diese Art von Operationen ausgeführt werden, in der Regel durch Webpack selbst behandelt.

Das gesagt, es gibt ein paar Möglichkeiten, dies zu lösen.

Der offensichtlichste Weg wäre es, die concat Teile in einer separaten Datei zu extrahieren (z prepare.js) und führen Sie den Build-Prozess starten, indem Sie etwas entlang dieser Linie läuft: node prepare.js && webpack. Das wird zuerst laufen vorbereiten und wenn das ohne Fehler beendet wird, wird Webpack ausgeführt. Normalerweise wird das zum scripts-Teil Ihres package.json hinzugefügt, z.

"scripts": { 
    "build": "node prepare.js && webpack" 
} 

Um die gleiche, aber in einer Webpack integrierte Art und Weise erreichen Sie könnten das gleiche tun, wo Sie die concat Teil in eine separate Datei extrahieren und dann lassen Webpack diese Datei ausführen, bevor beginnt zu bauen, mit Hilfe von Webpack Shell Plugin, z

const WebpackShellPlugin = require('webpack-shell-plugin'); 
module.exports = { 
    ... 
    plugins: [ 
    new WebpackShellPlugin({ 
     onBuildStart:['node prepare.js'] 
    }) 
    ], 
    ... 
} 
+0

danke für die Lösung. Sind Sie sicher, dass Webpack solche Operationen durchführen kann? Ich habe keine Lösung für mein "concat" -Problem gefunden, deshalb verwende ich externe Funktionen. Vielleicht ein Tutorial dafür? – Amay

+1

Alles hängt davon ab, wie Sie Ihre Stylesheets erstellen. In einer Webpack-Welt werden die Stile normalerweise in Ihren Javascript-Quelldateien benötigt und Webpack holt sie dann ab, führt sie durch scss compilers/postcss/whatnot und gibt dann entweder das fertige Produkt als Inline-Stil oder ein (oder mehrere) 'aus .css' Datei. Werfen Sie einen Blick auf https://www.bensmithett.com/smarter-css-builds-with-webpack/, http://survivejs.com/webpack/building-with-webpack/separating-css/ und https: // webpack.github.io/docs/stylesheets.html –