如何从父目录和所有子目录中抓取文件?

时间:2019-03-24 00:41:51

标签: javascript node.js fs discord.js

我想为我的discord.js命令处理程序获取父目录中和所有子目录中的所有javascript文件。我该如何实现?

我有一个工作代码块,该代码块已经从父目录中获取了所有.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);
    });
});

我希望通过父目录以及所有当前和将来的子目录加载jsfile会得到相同的结果。

我当前的结果是所有js文件都已加载,但子目录中的文件都被保留了。

如果有人可以帮助我,我将非常感谢!预先谢谢你。

1 个答案:

答案 0 :(得分:0)

所以,我想出了如何获得想要的结果。 我找到了一个名为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>

});

这将读取父目录的每个目录中的每个文件。