2017-01-16 2 views
0

Wie kann Regex im Pfad verwendet werden, während mehrere Eingabepfade im Webpack gesetzt werden?Regex im Eingabepfad beim Erstellen mehrerer Eingangspunkte im Webpack

Verzeichnis

webpack.config.js 

./javascripts/plugins/Alpha/plugin.js 
./javascripts/plugins/Beta/plugin.js 
./javascripts/plugins/Charlie/plugin.js 
./javascripts/plugins/Delta/plugin.js 
... 

Ich möchte wie diese Ausgabe?

./build/resources/plugins/Alpha/Create/plugin.js 
./build/resources/plugins/Beta/plugin.js 
./build/resources/plugins/Charlie/plugin.js 
./build/resources/plugins/Delta/plugin.js 
... 

Ich bin in der Lage dies unter Config durch erreichen

{ 
entry: { 
    "Alpha": "./resources/plugins/Alpha/plugin", 
    "Beta": "./resources/plugins/Beta/plugin", 
    "Charlie": "./resources/plugins/Charlie/plugin", 
    "Delta": "./resources/plugins/Delta/plugin" 
}, 
output: { 
    filename: "[name]/plugin.js", 
    path: "./build/resources/plugins" 
}, 
module: { 
    loaders: [ 
     {test: /\.js$/, loaders: ["babel-loader"]} 
    ] 
} 

}

Aber es gibt ein Problem, auch wenn meine Verzeichnisstruktur gleich ist, werde ich einen neuen Eintrag machen müssen in entry Schlüssel, wenn ich ein neues Plugin hinzufügen. Auf diese Weise wird mein webpack.config.js weiter wachsen. ich ein Muster in meinem Ein- und Ausgabeverzeichnis

Eingang sehen: ./javascripts/plugins/[pluginName]/plugin.js

Ausgang: ./build/resources/plugins/[pluginName]/plugin.js

Gibt es irgendeine Weise, die ich durch Schreiben eines beliebigen regulären Ausdrucks in Pfad gleicht nur erreichen kann?

+0

Mögliche Duplikate von [Wie Wildcard-Mapping in Eintrag von Webpack hinzufügen] (http://stackoverflow.com/questions/32874025/how-to- add-wildcard-mapping-in-entry-of-webpack) –

+0

Wie oben beschrieben, kann dies mit 'glob' gelöst werden. Ich habe nachgedacht, ob es irgendetwas gibt, das Webpack alleine anbietet. –

Antwort

0

Sie können fs verwenden, um ein Verzeichnis zu durchsuchen und das Objekt Einträge dynamisch zu erstellen. Das ist, was ich tue. (Ich nehme an, dass Sie an diesem Punkt Knoten verwenden.)

const fs = require('fs'); 
const entryMap = {}; 

fs.readdirSync('./src/app/pages/') 
    .filter(file => { 
     return file.match(/.*\.js$/); 
    }) 
    .forEach(f => { 
     entryMap[f.replace(/\.js$/, '')] = ['./pages/' + f]; 
    }); 
Verwandte Themen