package.json exports
https://nodejs.org/dist/latest-v12.x/docs/api/esm.html#esm_package_json_type_field
Conditional exports
根据不同的引用(import require)引入不同的文件
还有一个 types,用于导出 .d.ts 文件。
https://github.com/microsoft/TypeScript/issues/33079
https://github.com/browserify/resolve/pull/224
eg:
Nodejs esmodule(^13.x支持)
这里是官方给予的内容:
https://medium.com/@nodejs/announcing-core-node-js-support-for-ecmascript-modules-c5d6dc29b663
支持及使用:
nodejs 识别为esmodule前提:
- 使用import导入
- 文件后缀(suffix)为 .mjs
- 后缀为 .js,但package.json的type字段为 “module”
- 命令行指定
同样的,也有默认识别为commonjs的
官方建议指定自己的库为 mjs,或 cjs
!!!!有以下问题需要注意
- 强制声明文件拓展名
- esmodule中不可再使用require,除非使用 module.createRequire()