webpack 需要目录中的每个文件

IT技术 javascript webpack
2021-02-26 06:24:53

这是我的文件结构

-main.js
-SomeDir
   -fileA.js
   -fileB.js

如果我想main.jssomeDir不指定文件名的情况下加载(内部)每个文件,我该怎么办-

类似的东西:require(./someDir/*.js)

4个回答

解决方案:

var req = require.context("../someDir", true, /^(.*\.(js$))[^.]*$/igm);
req.keys().forEach(function(key){
    req(key);
});
// or just: req.keys().forEach(req)

额外的:

正则表达式匹配js但忽略test.js

/^(?!.*test.js)((.*\.(js\.*))[^.]*$)/igm)

对不起,我完全错了,这是我不知道的 webpack 语法。删除我的评论。
2021-04-17 06:24:53
@NickMcCurdy 难道不是反过来吗?Webpack 1 和 Webpack 2 支持这一点,但是没有 Webpack 它将无法工作......或者我在这里错过了什么?
2021-05-05 06:24:53
这个要求的 ES6 版本是什么?
2021-05-07 06:24:53
有谁知道您如何使用这种方法需要多个目录?
2021-05-10 06:24:53
使用这种方法时出现错误,有什么建议吗?谢谢。github.com/webpack/webpack/issues/1635
2021-05-12 06:24:53

是的,它是可能的,甚至在文件夹层次结构中递归

这是一个示例:

var context = require.context('./', true, /\.(html)$/);
var files={};

context.keys().forEach((filename)=>{
  console.log(filename);
  files[filename] = context(filename);
});
console.log(files); //you have file contents in the 'files' object, with filenames as keys

和一个现场演示(打开 devtools 查看生成的对象)

http://www.webpackbin.com/Vy6AwkWrz

在你的情况下,第一行是

var context = require.context('./SomeDir', false, /\.js$/);

参考:https : //webpack.github.io/docs/context.html#require-context

请注意,这些链接已过时
2021-04-29 06:24:53

一种方法是在 SomeDir 位置和该文件中创建一个 index.js 文件:

var req = require.context('./', true, /\.js$/);
req([]);

然后在 main.js 中:

require('./SomeDir');

或者

require('./SomeDir/index.js');

甚至

import something from "./SomeDir";
与接受的答案一样,在每个键上req([])调用和调用之间有什么区别req
2021-04-17 06:24:53
@JianWeihang 好吧,这是 3 岁了,apis 发生了变化。如果我没记错的话,它可以与 webpack 1 和 2 一起使用。
2021-05-05 06:24:53
Uncaught Error: Cannot find module ''.在线req([]),为什么它不起作用?
2021-05-15 06:24:53

webpack5 导致“webpack-context-dup-keys” 这里的解决方案 我们必须使用下面的/./.*.md$/ eg

 let ctxWrong   = require.context("../content/posts", true, /\.md$/);
 let ctxCorrect = require.context("../content/posts", true, /\.\/.*\.md$/); 

请看这里的问题