【问题标题】:How to make summary module that re-exports all the exports of sub-modules for ESM modules?如何制作汇总模块,重新导出 ESM 模块的子模块的所有导出?
【发布时间】: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 模块世界中完成类似的事情,而不必明确命名所有子文件中的每个导出?

【问题讨论】:

标签: javascript node.js node-modules es6-modules


【解决方案1】:

您可以为每个人使用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';

它将重新导出相应模块中的所有命名导出,但不会重新导出默认导出(那些you'd need to rename 否则它们会发生冲突)。

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

【讨论】:

    猜你喜欢
    • 2016-12-24
    • 2016-04-17
    • 1970-01-01
    • 2021-01-16
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    • 2019-09-24
    相关资源
    最近更新 更多