217个TypeScript库的构建、测试、文档与发布一体化流水线
esbuild负责高速构建,bun负责测试,monopub统一发布217个独立版本库,docs.thi.ng自动生成文档
✓ 构建测试发布全自动✓ 各包独立版本管理 ✕ 依赖自研发布工具链
方案简介
thi.ng/umbrella 是一个大型 TypeScript monorepo,包含 217 个独立库/包/工具和约 185 个示例项目,总计约 25 万行代码、约 4350 个源文件。要维护如此规模的仓库,必须有一套可靠的工程化流水线。该方案使用 esbuild 进行构建、bun 进行测试、thi.ng/monopub 发布工具链统一发版,并通过 docs.thi.ng 自动生成在线文档。所有包以 ESM 模块(ES2022 语法)分发,附带 export maps、TypeScript 类型定义和变更日志。这套组合适合维护多包 monorepo 的团队,尤其是各包需要独立版本、独立发布的场景。
亮点与能力
- 217 个包独立版本管理,互不绑定
- 构建由 esbuild 完成,速度快
- 测试由 bun.sh 运行
- 发布由 thi.ng/monopub 工具链统一执行
- 以 ESM 模块(ES2022 语法)分发,带 export maps
- 每个包附带 TypeScript 类型定义与变更日志
- 在线文档在 docs.thi.ng 自动生成
组成与分工
- esbuild:负责所有包的构建
- bun.sh:负责测试运行
- thi.ng/monopub:统一发布工具链,管理多包发版
- TypeScript:全部 217 个库的实现语言
- docs.thi.ng:自动生成的在线 API 文档站点
前置要求
- TypeScript 开发环境(全部包以 ES2022 语法的 ESM 模块分发)
- esbuild 构建工具
- bun.sh 运行时用于测试
- thi.ng/monopub 发布工具链
材料未给出具体安装命令,以下为材料中列出的工具官方地址:
- esbuild: https://esbuild.github.io/
- bun: https://bun.sh
- monopub: https://github.com/thi-ng/monopub
- API 文档: https://docs.thi.ng
使用与配置要点
- 每个包在各自 readme 中列出全部依赖,多数包只有零个或仅
@thi.ng内部运行时依赖 - 公共接口、枚举与类型统一声明在各包的
api.ts文件中 - 各包对其公共 API 提供完整 re-export,方便整库导入
- 构建产物高度模块化,常常每个文件只含单个函数/类,利于按需导入和 tree shaking
- 全部包采用 Apache Software License 2.0 许可
注意事项与常见问题
- 极少数包存在
@thi.ng之外的其他运行时依赖,使用前应查阅各包 readme 中的依赖清单 - 该项目已迁移至 Codeberg,原 GitHub 仓库仅为只读镜像,将于当年晚些时候删除
- 仓库明确声明其不是框架,所有包都可以单独使用,不要期望开箱即用的一体化方案
优缺点
- ✓ 构建测试发布全自动
- ✓ 各包独立版本管理
- ✕ 依赖自研发布工具链
出处
本方案挖掘自开源项目 thi-ng/umbrella,方案内容与实施命令均来自其 README 原文。
方案出处
thi-ng/umbrella:⛱ Broadly scoped ecosystem & mono-repository of 215 TypeScript projects (and ~1 3827 star ⛱ Broadly scoped ecosystem & mono-repository of 215 TypeScript projects (and ~185 examples) for general purpose, functional, data driven development
本方案由真实开源项目挖掘整理,实施命令均来自其 README 原文,安装使用请遵循项目开源协议。