Node 模块
初始化 Node 模块项目
$ npm init @ice/pkg node-project
项目类型选择『Node 模块』,会在当前目录下新建 node-project 文件夹并在其中初始化 Node 模块项目,其文件目录结构如下:
.
├── README.md
├── abc.json
├── build.config.mts
├── package.json
├── src
│ └── index.ts
└── tsconfig.json
使用 Node 模块
对于消费在 Node 端的产物,根据是否还需要提供 CommonJS 产物,可分为两种开发形态。
Pure ESM 模式
提示
ICE PKG 推荐使用 Pure ESM 的开发模式。
Pure ESM 是只提供 ES module 产物的开发形态,要求 Node 的版本在 ^12.20.0 || ^14.13.1 || >=16.0.0
的范围。
Pure ESM 的开发形态下只需输出 es2017
的产物即可。配置如下:
build.config.mts
import { defineConfig } from '@ice/pkg';
export default defineConfig({
transform: {
formats: ['es2017'],
},
});
同时导出配置如下:
package.json
{
"type": "module",
"exports": "./es2017/index.js"
}
Dual 模式
危险
Node 10.x、Node 11.x 已在 2021年4月 停止维护。所以建议使用 Pure ESM 开发 Node 模块。
Dual 模式 旨在同时提供 CommonJS 和 ES module 产物。通常是为了兼容 Node 版本低于 12.20.0
的版本。
支持 Dual 模式的模块需要额外输出 CommonJS 产物,配置如下:
build.config.mts
import { defineConfig } from '@ice/pkg';
export default defineConfig({
transform: {
formats: ['cjs', 'es2017'],
},
});
该配置输出 cjs
和 es2017
两个文件夹:
- cjs
- es2017
推荐的导出配置如下,且不推荐配置 type: "module"
package.json
{
- "type": "module",
"exports": {
"import": "./es2017/index.js",
"require": "./cjs/index.js"
}
}