Как загрузить все файлы в каталог с помощью webpack без инструкций require



У меня есть большое количество файлов javascript, разделенных на 4 подкаталога в моем приложении. В грунт я беру их все и собирать их в один файл. Эти файлы не имеют модуля.функция экспорта.



Я хочу использовать webpack и разделить его на 4 части. Я не хочу вручную входить и требовать все мои файлы.



Я хотел бы создать плагин, который при компиляции ходит по деревьям каталогов, а затем захватывает все .JS имена файлов и пути, затем требуется все файлы в каталоги и добавляет его к выходу.



Я хочу, чтобы все файлы в каждом каталоге были скомпилированы в модуль, который я мог бы затем потребовать от моего файла точки входа или включить в активы, которые http://webpack.github.io/docs/plugins.html упоминает.



при добавлении нового файла я просто хочу поместить его в правильный каталог и знать, что он будет включен.



есть ли способ сделать это с помощью webpack или плагина, который кто-то написал, чтобы сделать это?

579   5  

5 ответов:

вот что я сделал, чтобы добиться этого:

function requireAll(r) { r.keys().forEach(r); }
requireAll(require.context('./modules/', true, /\.js$/));

в моем файле приложения я закончил тем, что поставил require

require.context(
  "./common", // context folder
  true, // include subdirectories
  /.*/ // RegExp
)("./" + expr + "")

любезно предоставлено этим сообщением:https://github.com/webpack/webpack/issues/118

теперь он добавляет все мои файлы. У меня есть загрузчик для html и css, и он, кажется, отлично работает.

Как насчет карты всех файлов в папке?

// { 
//   './image1.png':  'data:image/png;base64,iVBORw0KGgoAAAANS',
//   './image2.png':  'data:image/png;base64,iVBP7aCASUUASf892',
// }

этого:

const allFiles = (ctx => {
    let keys = ctx.keys();
    let values = keys.map(ctx);
    return keys.reduce((o, k, i) => { o[k] = values[i]; return o; }, {});
})(require.context('./path/to/folder', true, /.*/));

это работает для меня :

function requireAll(r) { r.keys().forEach(r); } 

requireAll(require.context('./js/', true, /\.js$/));

Примечание: это может потребоваться .JS файлы в подкаталоги из ./ js / рекурсивно.

пример как получить карту всех изображений в текущей папке.

const IMAGES_REGEX = /\.(png|gif|ico|jpg|jpeg)$/;

function mapFiles(context) {
  const keys = context.keys();
  const values = keys.map(context);
  return keys.reduce((accumulator, key, index) => ({
    ...accumulator,
    [key]: values[index],
  }), {});
}

const allImages = mapFiles(require.context('./', true, IMAGES_REGEX));

Comments

    Ничего не найдено.