这是我当前的文件夹结构:
-- src
-- js
-- page 1
-- index.js
-- actions
-- components
-- reducers
-- page 2
-- index.js
-- actions
-- components
-- reducers
-- page 3
-- index.js
-- actions
-- components
-- reducers
这是我的webpack.config.js:
module.exports = {
entry: {
page1: './src/js/page1/index.js',
page2: './src/js/page2/index.js',
page3: './src/js/page3/index.js',
},
output: {
path: './assets/javascripts',
publicPath: '/assets/',
filename: '[name].js'
}
}
所以每当我创建一个新页面时,我都必须在我的入口对象中添加另一行。这可能变得非常大而且非常混乱。
那么有没有办法让webpack循环遍历/ src / js /文件夹中的所有文件夹并自动使相应文件夹中的index.js成为入口点?
感谢您的帮助!
答案 0 :(得分:6)
使用glob package:
const glob = require("glob");
const entry = glob.sync("src/js/**/*.js")
.reduce((x, y) => Object.assign(x, {
[y]: y,
}), {});
module.exports = {
entry,
output: {
path: './assets/javascripts',
publicPath: '/assets/',
filename: '[name].js'
}
}
这会迭代整个文件夹结构并抓取每个js文件并将其添加到条目哈希
答案 1 :(得分:1)
要补充我的答案,因为我无法发表评论。使用path.basename
方法将为您提供干净的,未嵌套的文件名。
const glob = require("glob")
const path = require("path")
const entry = glob
.sync("src/js/**/*.js")
.reduce((acc, curr) => {
return {...acc, [path.basename(curr, ".js")]: curr}
})
module.exports = {
entry,
output: {
path: './assets/javascripts',
publicPath: '/assets/',
filename: '[name].js'
}
}