Support for require() calls in --moduleResolution bundler and --module preserve

TL;DR

importrequire の両方が同じファイルで使えるようオプションが追加された。

// tsconfig.json

"compilerOptions": {
  "module": "preserve",
  // "moduleResolution": "bundler",
  // "esModuleInterop": true,
  // "resolveJsonModule": true,
}
import * as foo from "some-package/foo";
import bar = require("some-package/bar");

importrequire の参照は conditional exports により決定される。

// package.json
{
  "name": "some-package",
  "exports": {
    "./foo": {
      "import": "./esm/foo-from-import.mjs",
      "require": "./cjs/foo-from-require.cjs",
    },
    "./bar": {
      "import": "./esm/bar-from-import.mjs",
      "require": "./cjs/bar-from-require.cjs",
    },
  }
}

Last updated