Как я могу получить файлы из родительского каталога и всех подкаталогов внутри? - PullRequest
0 голосов
/ 24 марта 2019

Я хочу получить все файлы javascript внутри родительского каталога и во всех подкаталогах для моего обработчика команды discord.js. Как мне этого добиться?

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

const botConfig = require('./config/nvdconfig.json');
const Discord = require('discord.js');
const fs = require('fs');

const prefix = botConfig.prefix;
// nvdColor: #45c263

const bot = new Discord.Client({
    disableEveryone: true
});

bot.commands = new Discord.Collection();
const {
    readdirSync,
    statSync
} = require('fs');

const {
    join
} = require('path');

fs.readdir('./cmds/', (err, files) => {
    if (err) console.error(err);

    let jsfiles = files.filter(f => f.split('.').pop() === 'js');
    if (jsfiles.length <= 0) {
        return console.log('No commands to load.');
        return;
    }

    console.log(`Loading ${jsfiles.length} commands!`);

    jsfiles.forEach((f, i) => {
        let props = require(`./cmds/${f}`);
        console.log(`${i + 1}: ${f} loaded!`);
        bot.commands.set(props.help.name, props);
    });
});

Я ожидаю того же результата от загрузки jsfiles через родительский каталог, а также все текущие и будущие подкаталоги.

Мой текущий результат - все файлы js загружаются, но файлы внутри подкаталогов остаются одни.

Буду очень признателен, если кто-нибудь поможет мне с этим! Заранее спасибо.

1 Ответ

0 голосов
/ 24 марта 2019

Итак, я разобрался, как получить желаемый результат.Я нашел пакет узлов с именем fs-readdir-recursive, в котором было все, что я хотел.Установите пакет: npm install fs-readdir-recursive --save И инициализируйте его.const <var name> = require('fs-readdir-recursive');

Затем, после этого, создайте другую переменную.const <var name> = read('./<parent directory>/');

Эта переменная будет родительским каталогом, в котором выполняется поиск для каждого цикла.

const <var name> = require('fs-readdir-recursive');
const files = read('./cmds/');
files.forEach(file => {
    let cmd = file.replace('.js', '');
    let props = require(`./cmds/${cmd}`);

    <your code here>

});

Это будет читать каждый файл в каждом каталоге родительского элемента.

...