如何从父目录和其中的所有子目录中获取文件?
How can I grab files from inside a parent directory and all subdirectories inside?
我想为我的 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);
});
});
我希望通过父目录以及所有当前和未来的子目录加载 js 文件得到相同的结果。
我现在的结果是所有的js文件都被加载进来了,但是子目录里的文件却被留下了。
如果有人能帮助我,我将不胜感激!提前谢谢你。
所以,我想出了如何获得我想要的结果。
我找到了一个名为 fs-readdir-recursive 的节点包,它拥有我想要的一切。
安装包:npm install fs-readdir-recursive --save
并对其进行初始化。 const <var name> = require('fs-readdir-recursive');
然后在你这样做之后,创建另一个变量。 const <var name> = read('./<parent directory>/');
此变量将是使用 for each 循环搜索的父目录。
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>
});
这将读取父目录中的每个文件。
我想为我的 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);
});
});
我希望通过父目录以及所有当前和未来的子目录加载 js 文件得到相同的结果。
我现在的结果是所有的js文件都被加载进来了,但是子目录里的文件却被留下了。
如果有人能帮助我,我将不胜感激!提前谢谢你。
所以,我想出了如何获得我想要的结果。
我找到了一个名为 fs-readdir-recursive 的节点包,它拥有我想要的一切。
安装包:npm install fs-readdir-recursive --save
并对其进行初始化。 const <var name> = require('fs-readdir-recursive');
然后在你这样做之后,创建另一个变量。 const <var name> = read('./<parent directory>/');
此变量将是使用 for each 循环搜索的父目录。
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>
});
这将读取父目录中的每个文件。