【发布时间】:2021-01-11 05:16:28
【问题描述】:
如何重新导出 ESM 模块中多个文件的导出而不单独列出每个单独的导出?
我有一个 CommonJS 模块目录,其中包含一些我想转换为 ESM 导入/导出的文件。目前,我有一个 index.js 文件,其中包含以下内容:
// this just re-exports everything that the sub-modules export
module.exports = [
'./mapConcurrent.js',
'./deferred.js',
'./utils.js',
'./rateMap.js',
'./concurrency.js',
'./retry.js',
].reduce((obj, file) => {
const m = require(file);
Object.assign(obj, m);
return obj;
}, {});
这将重新导出模块目录中所有文件的所有导出,以便该模块的客户端只需导入一个文件并获取所有文件的所有入口点,而无需知道哪个入口点在哪个文件等。这适用于 CommonJS。
您如何在 ESM 模块世界中完成类似的事情,而不必明确命名所有子文件中的每个导出?
【问题讨论】:
-
我不相信 ESM 可以做到这一点,除非等待动态导入。它适用于 CJS,因为 require 只是另一个函数,但
import不是函数,它是顶级语句。
标签: javascript node.js node-modules es6-modules