Comments 2
CJS-модуль импортируется напрямую в ES6-модуль средствами JavaScript без прекомпиляции, если делать так:
// index.js
import {default as cjs} from './commonjs.js';
console.log(cjs.sum(1, 2));
console.log(cjs.aboba());
чтобы скрипт
index
всегда запускался в ES6-режиме, у него должно быть расширение*.mjs
;чтобы скрипт
commonjs
всегда считывался в режиме CommonJS, у него должно быть расширение*.cjs
;если у скрипта в пакете расширение просто
*.js
, то формат модулей регулируется черезtype
вpackage.json
(commonjs | module
);
Я в TypeScript не силён, но думаю, что можно его заставить транспилировать код в ES6-формат, а не в CommonJS.
Я уверен, что если бы CommonJS был достаточно хорош, не придумывали бы ES6, но если всё-таки придумали ES6, то должны быть весомые поводы транспилировать свой проект в CommonJS.
Как пример настройки для esm only сборки
https://github.com/ydb-platform/ydb-js-sdk/blob/main/tsconfig.json
Про esModuleInterop и совместимость модулей ES6 и CommonJS