Переберите папку и импортируйте index.js - PullRequest
0 голосов
/ 27 сентября 2019

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

У меня есть следующая структура:

root.js
-modules
-- mod1
--- index.js 
-- mod2
--- index.js 

В root.js Я хотел бы просмотреть каждый модуль в модулях, чтобы импортировать index.js, чтобы данные инициализации запускались при запуске приложения.Мне неясно, что является лучшим способом сделать это предпочтительно без использования каких-либо плагинов, если есть решение.

Ответы [ 2 ]

0 голосов
/ 27 сентября 2019

Оказывается, это было просто:

Экспортируйте все в modules.js файлах.

const req = require.context('./', true, /^\.\/[a-zA-Z0-9]+\/index.js$/);
const modules = req.keys().map(req);
module.exports = modules;

Затем импортируйте файл modules.js в некоторый файл root.js.

0 голосов
/ 27 сентября 2019

На мой взгляд, вы должны включать их "вручную"

// root.js

require('mod1.index')
require('mod2.index')

// ...

Это более понятно и прямо.Если у вас нет 100+ модулей

РЕДАКТИРОВАТЬ для динамического импорта:

Нет предложения зависимостей (вариант https://gist.github.com/kethinov/6658166#gistcomment-1603591)

'use strict'

const fs = require('fs')

const walkSync = function (dir, filelist) {
  const files = fs.readdirSync(dir)
  filelist = filelist || []
  files.forEach(function (file) {
    if (fs.statSync(dir + '/' + file).isDirectory()) {
      filelist = walkSync(dir + '/' + file, filelist)
    } else {
      filelist.push(dir + '/' + file)
    }
  })
  return filelist
}

allFiles = walkSync('./src')

allFiles.filter(f => f.split('/').pop() == 'index.js').forEach(f => require(f))

Одно предложение зависимости: Получить всефайлы рекурсивно в каталогах NodejS

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...