Документация 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
.