Require целой папки

в 21:46, , рубрики: node.js, require, модуль, папка, метки: , , , ,

imageЗдравствуй, %username%! Разрабатывая проект на Node.js я столкнулся с невозможностью сделать require целой папки.
Допустим, у нас есть такое дерево каталогов:

Project
— handlers
— — admin.js
— — user.js
— — settings.js
— routes
— — admin.js
— — user.js
— — settings.js
— app.js

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

Для этого мы должны в каждой нужной папке создать файл index.js и поместить в него следующий код:

var curFile, curPath, dir, fs, path, result, value, _i, _len;

result = {};
fs = require('fs');
path = require('path');
curPath = path.dirname(__filename);
curFile = path.basename(__filename);
dir = fs.readdirSync(curPath);

for (_i = 0, _len = dir.length; _i < _len; _i++) {
  value = dir[_i];
  if (value !== curFile) {
    result[value.split('.')[0]] = require(curPath + '/' + value);
  }
}

module.exports = result;

И затем мы можем указать просто require('./routes') или require('./handlers') и получить объект, свойствами которого будут названия файлов в этой директории. Каждое свойство будет содержать require одноименного файла.

P.S: Метод не претендует на что-либо.

Автор: mannaro

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js