Appearance
NPM 发布流程
本文档说明如何将 DingTalk 频道插件发布到 npm 供 OpenClaw 用户安装使用。
GitHub CI 自动发布(推荐)
仓库已提供自动发布工作流:.github/workflows/npm-publish.yml
触发条件:
- 推送任意新 tag 时触发
自动执行内容:
- 安装依赖
- 校验 tag 与
package.json的version同步(支持v2.7.0与2.7.0两种 tag 形式) - 当 tag 版本为标准 semver 预发布格式(如
v2.8.0-beta.0)时,自动发布到 npmbetadist-tag - 运行
type-check、lint、test - 通过后自动执行
npm publish --access public
需要在 npm 与 GitHub 完成 Trusted publisher 绑定:
- 在 npm 包设置中配置 GitHub Actions Trusted publisher
- 确保工作流具备
id-token: write权限(已在本仓库 workflow 配置)
说明:Trusted publisher 模式下,发布步骤不再需要 NPM_TOKEN Secret。 同时不要在仓库/组织变量里注入 NODE_AUTH_TOKEN 或 NPM_TOKEN,否则 npm 会优先尝试 token 认证,可能导致 OIDC 不生效。
推荐发布命令:
bash
# 先更新版本并提交
npm version patch
git push origin main --follow-tags或手动打 tag:
bash
# package.json version = 2.7.1 时
git tag v2.7.1
git push origin v2.7.1Beta 版本发布(CI)
当前 CI 支持标准 semver 预发布版本(-beta.*)自动发布到 npm beta dist-tag。
推荐流程:
bash
# 例如从 2.7.1 生成 2.7.2-beta.0,并自动创建对应 git tag
npm version prerelease --preid=beta
# 推送代码和 tag,触发 GitHub Actions 自动发布
git push origin main --follow-tagsCI 行为:
- tag(去掉可选
v前缀)必须与package.json.version完全一致 - 版本包含
-beta.*时,自动执行npm publish --access public --tag beta - 非预发布版本自动发布到
latest
前置要求
npm 账号
- 需要有 npm 账号(https://www.npmjs.com/)
- 需要有
@soimyscope 的发布权限(或你本人的账号可发布该 scope)
认证登录
bashnpm login代码质量检查
- 确保所有代码已通过类型检查和 lint 验证
- 确保所有测试通过(如果有)
发布步骤
1. 更新版本号
根据改动类型选择版本号更新策略:
bash
# 补丁版本(bug 修复):2.6.1 -> 2.6.2
npm version patch
# 次要版本(新功能,向后兼容):2.6.1 -> 2.7.0
npm version minor
# 主要版本(破坏性更新):2.6.1 -> 3.0.0
npm version major2. 验证发布内容
检查将要发布的文件列表:
bash
npm pack --dry-run这会显示哪些文件会被包含在 npm 包中。确保:
- ✅ 包含必要文件:
index.ts,src/,utils.ts,package.json,README.md,openclaw.plugin.json - ❌ 排除开发文件:
node_modules/,docs/,.git/, 配置文件等
3. 执行发布前检查
发布前会自动运行类型检查和 lint:
bash
npm run prepublishOnly如果检查失败,修复所有问题后重试。
4. 发布到 npm
bash
npm publish --access public注意:由于这是 scoped package (@soimy/dingtalk),必须使用 --access public 标志。
5. 验证发布
发布成功后,验证包已可用:
bash
# 查看包信息
npm info @soimy/dingtalk
# 查看最新版本
npm view @soimy/dingtalk version
# 查看包内容
npm view @soimy/dingtalk6. 测试安装
在测试环境验证安装流程:
bash
# 通过源码链接安装(当前推荐验证路径)
git clone https://github.com/soimy/openclaw-channel-dingtalk.git
cd openclaw-channel-dingtalk
npm install
openclaw plugins install -l .
# 或通过 npm 直接安装(仅测试)
npm install @soimy/dingtalkIMPORTANT
当前上游 ClawHub 安装链路对 @soimy/dingtalk 仍有已知 bug,发布后不要把 openclaw plugins install @soimy/dingtalk 作为唯一验收路径。 请至少验证一次 git clone + openclaw plugins install -l . 的安装链路。
发布检查清单
在执行发布前,确认以下事项:
- [ ] 代码已合并到 main 分支
- [ ] 所有测试通过
- [ ]
npm run type-check无错误 - [ ]
npm run lint无错误 - [ ] README.md 文档已更新
- [ ]
docs/releases/已记录新版本变更 - [ ] 版本号已更新(
npm version) - [ ]
.npmignore配置正确 - [ ] 已登录 npm (
npm whoami) - [ ] 有
@soimyscope 发布权限
文件包含规则
通过 .npmignore 控制哪些文件会被发布:
包含的文件:
index.ts- 插件入口src/- 源代码目录package.json- 包配置README.md- 使用文档openclaw.plugin.json- 插件元数据clawbot.plugin.json- 兼容配置
排除的文件:
node_modules/- 依赖包docs/- 开发文档.git/- Git 仓库- 各类配置文件(
.eslintrc.json,tsconfig.json等) - 开发工具文件(
AGENTS.md,TODO.md等)
常见问题
Q: 发布失败,提示权限错误
A: 确保:
- 已登录正确的 npm 账号:
npm whoami - 该账号有
@soimyscope 的发布权限 - 使用了
--access public标志
Q: 如何撤销已发布的版本?
A: 在发布后 72 小时内可以撤销:
bash
npm unpublish @soimy/dingtalk@版本号警告:不建议撤销已被用户使用的版本,应发布修复版本。
Q: 如何发布 beta 版本?
A: 推荐走 GitHub CI 自动发布:
bash
# 创建 beta 版本
npm version prerelease --preid=beta
# 推送代码和 tag,CI 将自动发布到 npm beta dist-tag
git push origin main --follow-tags用户可通过以下方式安装:
bash
openclaw plugins install @soimy/dingtalk@betaIMPORTANT
在上游 ClawHub 修复前,beta 版本也不应默认引导用户使用上述命令。 如需验证 beta,请优先使用源码链接安装或直接 npm install @soimy/dingtalk@beta 做包内容检查。