Skyroc Admin Docs
@core 基础设施

@skyroc/scripts

项目自动化 CLI(changelog / release / git-commit / cleanup / create-admin)

概览

包名@skyroc/scripts
版本2.5.0
命令sa(bin)
依赖cacc12bumppenquirerexecakolorist@soybeanjs/changelog@tanstack/router-generatornpm-check-updatespicomatch

@skyroc/scripts 是项目的自动化命令行工具。安装后可用 sa <command> 调用,也可在根 package.json 的 scripts 里间接调用(如 pnpm create:admin)。

完整命令列表

命令作用
sa changelog基于 @soybeanjs/changelog 生成 / 更新 CHANGELOG
sa release一站式发版:bumpp 升版本 → changelog → commit → tag → push
sa cleanup按 glob 清理 distnode_modules 等产物
sa git-commit交互式生成 Conventional Commits 信息
sa git-commit-verify校验 git commit message(用于 git hook)
sa update-pkgnpm-check-updates 批量升级依赖
sa create-admin <name>从内置 templates/admin 生成新 admin 应用
sa sync-admin-template [--check]apps/admin 同步到内置模板(--check 只校验差异)

在仓库里的使用

package.json

{
  "scripts": {
    "create:admin":         "sa create-admin",
    "sync:admin-template":  "sa sync-admin-template",
    "check:admin-template": "sa sync-admin-template --check"
  }
}

apps/admin package.json

{
  "scripts": {
    "cleanup":   "sa cleanup",
    "commit":    "sa git-commit",
    "commit:zh": "sa git-commit -l=zh-cn",
    "release":   "sa release",
    "update-pkg": "sa update-pkg"
  }
}

配置文件:soybean.config.ts

CLI 通过 c12 加载配置(搜索 soybean.config.{ts,js,mjs,json}):

// soybean.config.ts
export default {
  /** cleanup 命令清理的 glob */
  cleanupDirs: ['**/dist', '**/node_modules', '!node_modules/**'],

  /** npm-check-updates 透传参数 */
  ncuCommandArgs: ['--deep', '-u'],

  /** changelog 选项 */
  changelogOptions: {},

  /** git-commit-verify 跳过的正则 */
  gitCommitVerifyIgnores: [/^WIP:/, /^Merge /]
};

注意:@skyroc/scripts README 写的是 defineConfig(...),但当前源码中并未导出该函数;实际工作机制是 c12 直接读 default export。

模块结构

packages/@core/scripts/
├── bin.ts                # shebang 入口
├── templates/admin/       # create-admin 使用的模板快照
└── src/
    ├── index.ts          # setupCli(cac 注册命令)
    ├── commands/         # 各命令实现
    ├── config/           # c12 加载 CliOption
    ├── locales/          # 中英文交互文案
    ├── shared/           # execCommand(execa)
    └── types/            # CliOption 接口

命令实现要点

命令关键依赖与行为
changelog包装 @soybeanjs/changelog,按 git 提交记录生成
releasebumpp 交互选择 patch/minor/major → 生成 changelog → 提交 → 打 tag → 可选推送
git-commitenquirer 引导选择 type / scope / subject,输出 type(scope): subject;支持 -l=zh-cn 中文
git-commit-verifysimple-git-hooks 调用,匹配 gitCommitVerifyIgnores 跳过的,再用正则校验
cleanuppicomatch + execa 删除匹配的目录(含跨平台 rm)
create-admintemplates/admin 拷贝到目标路径,可选 --install / --git-init
sync-admin-template反向:把 apps/admin 同步到 templates/admin--check 只 diff
update-pkg透传 ncu 参数

locale 文案

src/locales/{en-us,zh-cn}.ts 提供 prompt 与提示信息,sa git-commit -l=zh-cn 切到中文。

与 monorepo 工程化的关系

不公开的内部 API

src/commands/index.ts 还导出了 genChangelogcleanupcreateAdminTemplategitCommit 等命令函数,理论上可深路径 import 复用,但 package.jsonexports 字段未公开它们,按内部 API 对待。

On this page