packages
决定使用何种 module
- ESM
.mjs后缀.js后缀并且package.json的type为module。- Strings passed in as an argument to --eval, or piped to node via STDIN, with the flag --input-type=module.
- CJS
.cjs后缀.js后缀并且package.json的type为commonjs(或者不指定)。- Strings passed in as an argument to --eval or --print, or piped to node via STDIN, with the flag --input-type=commonjs.
加载
- CJS
- 同步加载
- 支持将文件夹当做模块
- 支持加载
.js/.json/.node文件 .json文件会被当做文本处理- 可以缺省文件后缀
- ESM
- 异步加载
- 文件路径必须完整
- 仅支持加载
.js/.mjs/.cjs文件
入口
main: 指定package入口exports:指定多个入口- 其他未指定的入口如果被其他项目引用则会报错。
- 可以通过
import/require来指定不同的引入方式需要加载的文件。这样的特定属性包括:node-addonsnode:node环境下加载import:import/import()下加载require:require下加载default:默认,比其他的加载方式优先级低
imports:有点像包的别名,可以通过#pkgName的方式引入某个包的某些文件。
