如何制作汇总模块,重新导出 ESM 模块的所有子模块导出?

How to make summary module that re-exports all the exports of sub-modules for ESM modules?

如何在不单独列出每个导出的情况下从 ESM 模块中的多个文件重新导出导出?

我有一个 CommonJS 模块目录,其中包含许多我想转换为 ESM 的文件 imports/exports。目前,我有一个 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 模块世界中完成类似的事情而不必明确命名所有子文件中的每个导出?

您可以为每个人使用 star export

export * from './mapConcurrent.js';
export * from './deferred.js';
export * from './utils.js';
export * from './rateMap.js';
export * from './concurrency.js';
export * from './retry.js';

它将重新导出来自相应模块的所有命名导出,但不是默认导出(那些 否则它们会发生冲突)。

所以不,您不必明确命名每个导出,但您必须明确声明所有子文件。