NodeJS 如何从目录中的每个文件导出所有内容?

ovfsdjhp  于 2022-12-03  发布在  Node.js
关注(0)|答案(1)|浏览(235)

通常,我会创建一个index.js文件,用于导出特定目录中每个文件的所有内容,如下所示:

export * from "./file1"
export * from "./file2"
export * from "./file3"

这是我所有项目中的常见模式。这种方法的缺点是,每当我在目录中创建一个新文件时,我都必须更改其对应的index.js文件并导出新文件。现在,我尝试将其自动化,并编写一个脚本来导出目录中每个文件中的所有内容。
在谷歌上搜索了一下,我找到了这个:

import fs from "fs";

export let exp = {};

fs.readdirSync("./").forEach(function (file) {
  if (file.indexOf(".js") > -1 && file != "index.js") {
    const imp = require(`./` + file);
    exp = { ...exp, ...imp };
  }
});

但是它不起作用,可能是因为我使用了require函数,而它不适用于ES模块。
另外,我不能写这样的东西,因为我不允许在功能块中使用export

export let exp = {};

fs.readdirSync("./").forEach(function (file) {
  if (file.indexOf(".ts") > -1 && file != "index.ts") {
    export * from ("./"+file);
  }
});

所以我在这里进货。你有什么想法吗?

wmtdaxz3

wmtdaxz31#

我建议使用像glob这样的包。glob包允许您获取目录中的所有文件,包括隐藏在子文件夹中的文件。
示例用法:

const glob = require("glob");

glob("**/*", function (err, files) {
  // files is an array of filenames
  // err is an error object or null
});

相关问题