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