Общая JS оболочка для скриптов модуля ES - PullRequest
0 голосов
/ 27 мая 2020

Документация Node по модулям ECMAScript дает рекомендации для «двойных пакетов», которые предоставляют пользователям как общие сценарии JS, так и сценарии модуля ES.

В частности, они предлагают транспилировать модуль ES сценарии в Common JS, а затем с помощью «оболочки модуля ES», сценария модуля ES, который импортирует из CJS и реэкспортирует свой именованный экспорт CJS как экспорт с именем ESM.

// ./node_modules/pkg/wrapper.mjs
import cjsModule from './index.cjs';
export const name = cjsModule.name;

Мой вопрос: можно ли сделать это наоборот, предоставив мои сценарии в формате модуля ES, но добавив простой файл-оболочку в Common JS, позволяя CJS пользователям require it?

Я, со своей стороны, не вижу способа сделать это в синхронном коде. Мне кажется, что сценарии Common JS могут импортировать модули ES только через асинхронный динамический c import().

(async () => {
    const {foo} = await import('./foo.mjs');
})();

Но это означает, что мой CJS script ничего не может экспортировать это зависит от foo.

...