Подтвердить что ты не робот

Webpack требует каждого файла в каталоге

Это моя файловая структура

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

Что делать, если я хочу загрузить (внутри main.js) каждый файл в someDir без указания имен файлов -

что-то вроде: require(./someDir/*.js)?

4b9b3361

Ответ 1

Решение:

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

дополнительно:

regex для соответствия js, но игнорировать test.js

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

Ответ 2

Одним из подходов может быть создание файла index.js в месте SomeDir и в этом файле:

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

Затем в main.js:

require('./SomeDir');

или

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

или даже

import something from "./SomeDir";

Ответ 3

Да, возможно, даже рекурсивно в иерархии папок

Здесь пример:

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