如何保留文件夹结构和文件名?
保留通配符** / * .js很重要。我希望保持动态,不要手动添加新组件。
文件夹结构
| - src | –…
该 webpack文档 声明:
请注意,此选项称为文件名,但您仍然可以使用“js / [name] /bundle.js”之类的内容来创建文件夹结构。
所以如果你的webpack的输出文件名是 dirA/fileA ,它将输出到
dirA/fileA
|-- dist |-- dirA |-- fileA.js
但你也说明了这一点
保留通配符** / * .js很重要
我们可以利用您可以通过将对象传递给webpack的条目来命名文件的事实。
我假设你正在使用节点 glob (该 $.glob.sync 我有点困惑),其输出是一个匹配glob模式的路径数组。然后,我们只需要将此数组修改为具有以下格式的对象:
glob
$.glob.sync
//from ["./src/dirA/fileA.js", "./src/dirB/fileB.js"] // to { "dirA/fileA": "./src/dirA/fileA.js", "dirB/fileB": "./src/dirB/fileB.js", }
这是一个简单的例子:
const glob = require('glob'); const entry = glob.sync('./src/**/*.js').reduce((entry, path) => { const pathName = path.replace(/(\.\/src\/|\.js)/g, ''); // remove `./src/`, `.js` entry[pathName] = path; return entry; }, {}); module.exports = { mode: 'development', entry, output: { filename: '[name].js' } }