首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否可以在webpack配置中为每个文件夹动态创建一个入口点?

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

Stack Overflow用户
提问于 2016-11-21 23:40:39
回答 2查看 3.4K关注 0票数 3

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

代码语言:javascript
复制
-- 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:

代码语言:javascript
复制
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'
    }
}

因此,每次我创建一个新页面时,我都必须在我的entry对象中添加另一行。这可能会变得非常大,非常混乱。

那么有没有办法让webpack遍历/src/js/文件夹中的所有文件夹,并自动将相应文件夹中的index.js作为入口点呢?

EN

回答 2

Stack Overflow用户

发布于 2017-04-25 17:49:28

使用glob package

代码语言:javascript
复制
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文件并将其添加到条目散列中

票数 10
EN

Stack Overflow用户

发布于 2019-01-10 02:48:56

添加到我上面的答案,因为我不能评论。使用path.basename方法将为您提供干净的、未嵌套的文件名。

代码语言:javascript
复制
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'
    }
}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40723947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档