经过三次尝试,我们终于成功地将所有的 Node.js 代码从 CJS 迁移到原生 ESM ,并且单元测试的 CI 大幅减少。

简单介绍一下之前的状况(你可能在 repo 设置或工具链上有不同的选择,但核心步骤和概念应该是一样的):
- 包含前端和后端项目的 TypeScript monorepo
- TypeScript 代码 ~60k 行(包括前端)
- 在 TypeScript 中使用
import - 使用 PNPM 进行 workspace (monorepo) 管理
- 使用 tsc 编译 Node.js ,使用 Parcel 打包前端项目
- 使用 Jest +
ts-jest进行单元测试。 - 使用
module-alias处理内部 path alias
顺带一提,我们的项目 Logto 是一个开源的身份 (auth) 解决方案。
由于文章篇幅过长,我们分成了上下两篇。感兴趣的朋友可以移步 dev.to 查看:
