package.json exports

https://nodejs.org/dist/latest-v12.x/docs/api/esm.html#esm_package_json_type_field

Conditional exports

根据不同的引用(import require)引入不同的文件
image.png
还有一个 types,用于导出 .d.ts 文件。
https://github.com/microsoft/TypeScript/issues/33079
https://github.com/browserify/resolve/pull/224
eg:
image.png

Nodejs esmodule(^13.x支持)

这里是官方给予的内容:
https://medium.com/@nodejs/announcing-core-node-js-support-for-ecmascript-modules-c5d6dc29b663

支持及使用:
image.png

nodejs 识别为esmodule前提:
image.png

  1. 使用import导入

    1. 文件后缀(suffix)为 .mjs
    2. 后缀为 .js,但package.json的type字段为 “module”
    3. 命令行指定

同样的,也有默认识别为commonjs的
image.png
官方建议指定自己的库为 mjs,或 cjs
image.png
!!!!有以下问题需要注意
image.png

  1. 强制声明文件拓展名
  2. esmodule中不可再使用require,除非使用 module.createRequire()


tsconfig如何配置,在node14下

看这里https://stackoverflow.com/questions/61305578/what-typescript-configuration-produces-output-closest-to-node-js-14-capabilities/61305579#61305579