100 - 《手撕源码 01:Astro》
发布于 2022年4月19日
Astro 是最近比较火的 0JS 框架。
工程化基于 pnpm + typescript + turbo + prettier+ changeset + esbuild,都是现时最流行的社区方案。pnpm 用于安装依赖和管理 monorepo;turbo 用于 monorepo 命令提速;changeset 用于生成 changelog;源码构建是 esbuild + tsc,esbuild 编译 src 目录到 dist,tsc 生成类型到 dist/types。
这部分有一些值得学习的点。1)scripts 目录独立成包,设置为 private,方便在子包中通过 @astro/scripts 直接调用;2)esbuild + tsc 的源码构建方案,在不需要类型时(比如 CI)速度会很快;3)产出的 npm 包是 type=module,面向未来,通过 exports 声明导出文件,通过 typesVersions 映射类型文件到产物。
配置部分。配置读取基于 https://github.com/natemoo-re/proload,50+ Star,通过插件支持 TypeScript 格式的配置文