Skip to content

Latest commit

 

History

History
43 lines (34 loc) · 2.65 KB

ARCHITECTURE.MD

File metadata and controls

43 lines (34 loc) · 2.65 KB

Architecture

快速管理 Monorepo 下的各包版本、自动构建、自动格式化、自动 publish、自动 tag、自动 push、自动 release

  • lifecycle-ready:

zakuro.json:

  • $schema

  • root 根目录,相对于 zakuro.json 所在目录 ./

  • registry 发布地址 npmjs.org

  • branch 允许的分支,string 或 string[] master

  • packageMange 包管理工具 pnpm

  • workspace 相关配置,无则代表不是工作区,有则是工作区 null

  • workspace.main 项目主包的包名

  • options.version 版本号格式 v%major%.%minor%.%%

  • options.versionPre 预发布版本号格式 v%major%.%minor%.%%-pre-%order%*

  • options.versionBeta 测试版本号格式 v%major%.%minor%.%%-beta-%order%*

  • options.checkCommand 检查指令可用性 true

  • options.checkBranch 检查分支 true

  • options.checkChance 检查仓库变化 true

  • options.lint eslint 指令,不填则不运行 pnpm lint

  • options.format prettier 指令,不填则不运行 pnpm format

  • 先获取工作目录: process.cwd(),判断./zakuro.json 是否存在否则返回 null,有则读取并 JSON.parse 不合法 JSON 则抛错。经由 Tsukiko.parse 检查格式是否合法并处理默认值,不合法则抛错。保存 config 数据于全局中。

  • 通过 config.workspace 判断是否为 monorepo 项目,是则使用 manypkgs 包读取所有包数据并保存于全局。

  • checkCommand:获取 config 的 packageMange 与钩子里用的指令的前缀,使用 shelljs 包依次检查 git 及 获取内容指令是否有效,无效则抛错。

beforeCommit:

  • checkBranch:使用 git checkout 指令判断当前分支是否允许,不允许则抛错。

  • checkChance:使用 git 指令获取最新的 tag 距今为止的提交发生变化文件清单。非

  • checkTags:判断本地和远程 tag 是否已存在。workspace:过滤掉所有包的根目录没有处于变化文件清单中的包。不开启该检查项则会为所有包。

  • workspace:列出过滤后包列表,可供选择,没有选择任何包或无变化则运行完毕

  • 1.询问版本号:正式 pre beta

  • 2.询问 major,minor 增加意愿

  • 3.遍历过滤包的当前版本号,然后解析版本号,根据意愿变动版本号(正式则在相应位置+ 1,beta 和 pre 则判断当前版本号与当前语义版本号是否一致,是则 beta/pre 后缀+1,否则替换为新语义版本号且 beta/pre 设为 1)

  • 5.更新过滤包的 pkg.json 版本号

  • 如果有,执行 lint,format...

  • workspace:判断主包版本号是否有更新,是则以此作为基准,否则跳转至 add。

  • 根据当前版本号加对应标签(如果有 checkTags 则先检查是否已存在,是则抛错)