2017-01-16 53 views
0

如何在webpack中设置多个入口路径的同时在路径中使用正则表达式?在webpack中创建多个入口点的入口路径中的正则表达式

目录

webpack.config.js 

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

我想这样的输出?

./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 
... 

我可以通过下面的配置

{ 
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"]} 
    ] 
} 

}

实现这一目标,但有一个问题,即使我的目录结构是一样的,我将不得不做出新的条目在entry键中,如果我添加一个新的插件。这样我的webpack.config.js将继续增长。 我可以在我的输入和输出目录中看到的模式

输入:./javascripts/plugins/[pluginName]/plugin.js

输出:./build/resources/plugins/[pluginName]/plugin.js

有什么办法,我可以通过写路径中的任何正则表达式实现相同的公正?

+0

可能重复的[如何添加通配符映射在webpack入门](http://stackoverflow.com/questions/32874025/how-to- add-wildcard-mapping-in-entry-of-webpack) –

+0

根据上面的链接,可以使用'glob'来解决。我在想,是否有什么webpack提供自己的。 –

回答

0

您可以使用fs来扫描目录并动态创建条目对象。我就是做这个的。 (我假设你正在使用节点在这一点上。)

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]; 
    });