Weiß jemand, wie man mehrere Ausgabepfade in einer webpack.config.js-Datei erstellt? Ich verwende Bootstrap-Sass, das mit einigen verschiedenen Schriftdateien usw. geliefert wird. Damit Webpack diese verarbeiten kann, habe ich einen Dateilader hinzugefügt, der ordnungsgemäß funktioniert. Die ausgegebenen Dateien werden jedoch unter dem von mir angegebenen Ausgabepfad gespeichert der Rest meiner Dateien:
output: {
path: __dirname + "/js",
filename: "scripts.min.js"
}
Ich möchte etwas erreichen, bei dem ich mir vielleicht die Erweiterungstypen für das ausgegebene Webpack ansehen kann und für Dinge, die mit .woff .eot usw. enden, sie auf einen anderen Ausgabepfad umleiten lassen. Ist das möglich?
Ich habe ein wenig googeln und kam in dieser * Ausgabe auf Github , wo ein paar Lösungen angeboten werden, bearbeiten:
Es sieht jedoch so aus, als müssten Sie den Einstiegspunkt kennen, um eine Ausgabe mit der Hash-Methode angeben zu können, z.
var entryPointsPathPrefix = './src/javascripts/pages';
var WebpackConfig = {
entry : {
a: entryPointsPathPrefix + '/a.jsx',
b: entryPointsPathPrefix + '/b.jsx',
c: entryPointsPathPrefix + '/c.jsx',
d: entryPointsPathPrefix + '/d.jsx'
},
// send to distribution
output: {
path: './dist/js',
filename: '[name].js'
}
}
* https://github.com/webpack/webpack/issues/1189
In meinem Fall ist der Eingabeprozess jedoch in Bezug auf die Schriftdateien irgendwie abstrahiert und alles, was ich weiß, ist die Ausgabe. Im Fall meiner anderen Dateien, die Transformationen durchlaufen, gibt es einen bekannten Punkt, an dem ich fordere, dass sie dann von meinen Loadern verarbeitet werden. Wenn es eine Möglichkeit gäbe herauszufinden, wo dieser Schritt stattfand, könnte ich die Hash-Methode verwenden, um die Ausgabepfade anzupassen, aber ich weiß nicht, wo diese Dateien benötigt werden.
module{}
Objekt ist falsch. Es ist nicht erforderlich. Er wird auf der gleichen Ebene wie die Schlüsselwörter erweitert / zusammengefügt werdenname
,entry
,output
(von Ihrem Beispiel). <pre> <code> {module: {mode: "development", devtool: "source-map"}}, name: "a", Eintrag: "./a/app", Ausgabe: {path: "/ a ", Dateiname:" bundle.js "}} </ code> </ pre>Webpack unterstützt mehrere Ausgabepfade.
Legen Sie die Ausgabepfade als Eingabeschlüssel fest. Und verwenden Sie die
name
als Ausgabevorlage.Webpack-Konfiguration:
generiert:
quelle
dist
. Anstattmodule/a/index.js
ein Ausgabepfad zu sein, sollte dies der Fall sein.module/a/dist/index.js
Andernfalls überschreiben Sie Ihre Eingabedateien.dist
Ordner @Sung ist bereits im Ausgabepfad konfiguriert. Die generierte Datei wäre also tatsächlichdist/module/a/index.js
, was ich nicht erwähnt habe.output.filename
wie hier dokumentiert: webpack.js.org/configuration/output/#outputfilenameWenn Sie mit mehreren Ausgabepfaden mit derselben Tiefe und Ordnerstruktur leben können, gibt es eine Möglichkeit, dies in Webpack 2 zu tun (müssen noch mit Webpack 1.x getestet werden).
Grundsätzlich befolgen Sie nicht die Dokumentregeln und geben einen Pfad für den Dateinamen an.
Das wird diese Ordnerstruktur nehmen
Und verwandeln Sie es in
quelle
Ich habe ein Plugin geschrieben, das hoffentlich das tun kann, was Sie wollen. Sie können bekannte oder unbekannte Einstiegspunkte (mit glob ) angeben und genaue Ausgaben angeben oder sie dynamisch mithilfe des Pfads und des Namens der Eingabedatei generieren. https://www.npmjs.com/package/webpack-entry-plus
quelle
Sie können definitiv eine Reihe von Konfigurationen aus Ihrer Datei webpack.config zurückgeben. Es ist jedoch keine optimale Lösung, wenn nur eine Kopie der Artefakte im Ordner der Projektdokumentation gespeichert werden soll, da Webpack Ihren Code zweimal erstellt und die Gesamtzeit für die Erstellung verdoppelt.
In diesem Fall würde ich empfehlen, stattdessen das FileManagerWebpackPlugin-Plugin zu verwenden:
quelle
Sie können nur einen Ausgabepfad haben.
aus den Dokumenten https://github.com/webpack/docs/wiki/configuration#output
quelle
Ich bin gerade dazu gekommen, in index.js im File-Loader-Modul zu gehen und zu ändern, wohin der Inhalt gesendet wurde. Dies ist wahrscheinlich nicht die optimale Lösung, aber bis es einen anderen Weg gibt, ist dies in Ordnung, da ich genau weiß, was von diesem Loader verarbeitet wird, bei dem es sich nur um Schriftarten handelt.
quelle