CI/CD 与发布
GitHub Actions 工作流
CI 工作流 (.github/workflows/ci.yml)
触发条件:
push到main分支- Pull Request
矩阵策略:
共 9 个组合,fail-fast: false(一个失败不阻止其他)。
流程步骤:
并发控制:
同一 ref 的重复运行会取消前一个(除了 main 分支的推送)。
PR 工作流 (.github/workflows/pr.yml)
仅检查 PR 标题是否符合 Conventional Commits 格式(使用 amannn/action-semantic-pull-request)。
发布流程
semantic-release
发布条件(所有条件必须同时满足):
- Ubuntu 环境
- Node.js 24
push事件(不是 PR)refs/heads/main分支
发布命令:
publish/ 目录包含独立的 package.json,用于安装 semantic-release 及其插件。使用 --ignore-workspace 避免与主 workspace 冲突。
发布认证
- GitHub Token:
${{ secrets.GITHUB_TOKEN }}(创建 Release) - npm Token:通过 OIDC(
id-token: write权限)实现可信发布
版本号
package.json 中的版本是 "0.0.0-development" — 实际版本号由 semantic-release 在发布时根据 commit 消息自动确定。
标签格式
使用 ${version}(无 v 前缀),如 0.38.1。
Dependabot
自动提交依赖更新 PR。
包发布配置
- 只发布
dist/目录 - CLI 入口:
dist/ncc/cli.js - API 入口:
dist/ncc/index.js - 作用域包公开发布
构建可复现性
pnpm install --frozen-lockfile:确保依赖精确prepublishOnly脚本使用--no-cache:确保产物不受缓存影响packageManager字段锁定 pnpm 版本(含 SHA-512 校验)