Webpack требует каждого файла в каталоге
Это моя файловая структура
-main.js
-SomeDir
-fileA.js
-fileB.js
Что делать, если я хочу загрузить (внутри main.js
) каждый файл в someDir
без указания имен файлов -
что-то вроде: require(./someDir/*.js)
?
Ответы
Ответ 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