Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以在webpack配置中为每个文件夹动态创建一个入口点?_Webpack_Webpack 2 - Fatal编程技术网

是否可以在webpack配置中为每个文件夹动态创建一个入口点?

是否可以在webpack配置中为每个文件夹动态创建一个入口点?,webpack,webpack-2,Webpack,Webpack 2,这是我当前的文件夹结构: -- src -- js -- page 1 -- index.js -- actions -- components -- reducers -- page 2 -- index.js -- actions -- components -- reducers -- page 3

这是我当前的文件夹结构:

-- 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作为入口点

使用:


这将迭代整个文件夹结构,获取每个js文件,并将其添加到条目哈希中,以添加到我上面的答案中,因为我无法发表评论。使用
path.basename
方法将为您提供干净的非嵌套文件名

const glob=require(“glob”)
const path=require(“路径”)
const entry=glob
.sync(“src/js/***.js”)
.减少((会计科目,当前)=>{
返回{…acc[path.basename(curr,.js”)]:curr}
})
module.exports={
进入
输出:{
路径:“./assets/javascripts”,
publicPath:“/assets/”,
文件名:'[name].js'
}

}
是否可以使用.map硬编码,而不是使用nay包?
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'
    }
}