cjs-esm

v0.4.3
Another CommonJs transform ESModule lib.

cjs-esm

Another CommonJs transform ESModule lib.

NPM version NPM Downloads

English | 简体中文

Usage

import cjs2esm from 'cjs-esm'
// or
// const cjs2esm = require('cjs-esm').default

const { code, map } = cjs2esm(`const fs = require('fs')`)

TODO

✅ Nested scope(function-scope) 🚧-🐞

function load(path) {
  require(path);
}
↓
function load(path) {
  import/*🚧-🐞*/(path).then(m => m.default || m);
}

❌ Dynamic require id

✅ require statement

// Top-level scope
const foo = require('foo').defaultimport foo from 'foo';

const foo = require('foo')
↓
import * as foo from 'foo';

const foo = require('foo').barimport * as __CJS_import__0__ from 'foo'; const { bar: foo } = __CJS_import__0__;

// Non top-level scope
const foo = [{ bar: require('foo').bar }]
↓
import * as __CJS_import__0__ from 'foo'; const foo = [{ bar: __CJS_import__0__.bar }]

✅ exports statement

module.exports = fn() { };
↓
const __CJS__export_default__ = module.exports = fn() { };
export { __CJS__export_default__ as default }

exports.foo = 'foo';
↓
const __CJS__export_foo__ = (module.exports == null ? {} : module.exports).foo;
export { __CJS__export_foo__ as foo }
npm i cjs-esm

Metadata

  • MIT
  • Whatever
  • 草鞋没号
  • released 5/13/2022

Downloads

Maintainers