本文档用于说明 pi-langfuse 的标准发布流程,供后续 agent 或维护者执行参考。
当前仓库的自动发布由 .github/workflows/publish.yml 驱动,触发条件是:
- GitHub Release 被发布(
release.published) - Release 对应的 tag 必须与
package.json中的版本一致 - 工作流会执行
npm ci、npm run typecheck、npm pack --dry-run,最后执行npm publish
这意味着:
- 只创建 tag,不创建 GitHub Release,不会触发自动发布
- tag 名必须是
v<package.json version>,例如v1.4.2
- 已具备仓库 push 和 release 权限
- GitHub 仓库已配置
NPM_TOKENsecret - 本地已安装
npm、git、gh gh auth status已通过认证
可选检查命令:
gh auth status
git remote -v建议在 main 分支执行,且工作区保持干净。
git checkout main
git pull origin main
git status按实际需要选择一个版本命令。这里使用 --no-git-tag-version,避免 npm version 自动创建 tag,统一由后续步骤手动创建。
npm version patch --no-git-tag-version也可以使用:
npm version minor --no-git-tag-version
npm version major --no-git-tag-versionnpm ci
npm run typecheck
npm pack --dry-rungit add package.json package-lock.json
git commit -m "release: v$(node -p 'require(\"./package.json\").version')"
git push origin main如果本次发布还包含代码变更,先将代码和版本号一起提交,再执行 git push origin main。
TAG="v$(node -p 'require(\"./package.json\").version')"
git tag -a "$TAG" -m "release: $TAG"
git push origin "$TAG"publish.yml 监听的是 Release 发布事件,因此这里必须创建 Release。
TAG="v$(node -p 'require(\"./package.json\").version')"
gh release create "$TAG" \
--title "$TAG" \
--generate-notes执行完成后,GitHub Actions 会自动开始发布到 npm。
适合已经完成代码修改,准备正式发版时直接执行:
git checkout main
git pull origin main
npm version patch --no-git-tag-version
npm ci
npm run typecheck
npm pack --dry-run
git add package.json package-lock.json
git commit -m "release: v$(node -p 'require(\"./package.json\").version')"
git push origin main
TAG="v$(node -p 'require(\"./package.json\").version')"
git tag -a "$TAG" -m "release: $TAG"
git push origin "$TAG"
gh release create "$TAG" --title "$TAG" --generate-notes如果版本号已经更新并且 commit 已经推送到远端,只需要执行下面几步:
git checkout main
git pull origin main
TAG="v$(node -p 'require(\"./package.json\").version')"
git tag -a "$TAG" -m "release: $TAG"
git push origin "$TAG"
gh release create "$TAG" --title "$TAG" --generate-notesgh run list --workflow publish.yml --limit 5npm view pi-langfuse version原因通常是只推送了 tag,没有创建 GitHub Release。补执行以下命令即可:
TAG="v$(node -p 'require(\"./package.json\").version')"
gh release create "$TAG" --title "$TAG" --generate-notes工作流会校验:
v$(node -p 'require("./package.json").version')如果当前 package.json 是 1.4.2,则 tag 必须是 v1.4.2。
npm 不允许重复发布同一个版本。需要:
- 更新
package.json版本号 - 重新 commit
- 重新创建新的 tag
- 重新创建新的 GitHub Release
- 先确认当前版本号和目标版本号
- 先完成代码提交,再创建 tag
- 先推送 tag,再创建 GitHub Release
- 不要假设「push tag」会自动触发发布
- 创建 Release 前,确认 tag 与
package.json版本完全一致