| name | plugin-publish |
| description | 发布 Zhin.js 插件到 npm 和 Zhin 插件市场。Use when asked to publish a plugin, prepare for release, check publish readiness, or submit to the Zhin plugin marketplace. 引导完成发布前检查、版本管理和提交流程。 |
| keywords | ["发布","publish","npm","插件市场","marketplace","release","版本","version","changeset"] |
| tags | ["development","plugin","publish","release"] |
Zhin 插件发布
引导将 Zhin.js 插件发布到 npm 和 Zhin 插件市场,确保包结构、元数据和质量符合社区标准。
适用场景
- 用户说"发布插件"、"提交到插件市场"、"准备发版"
- 插件开发完成需要分享给社区
- 需要检查插件是否满足发布条件
发布前检查清单
第 1 步:包元数据检查
验证 package.json 必需字段:
{
"name": "zhin.js-{name}",
"version": "0.1.0",
"type": "module",
"description": "插件简介",
"main": "./lib/index.js",
"types": "./lib/index.d.ts",
"exports": {
".": {
"types": "./lib/index.d.ts",
"development": "./src/index.ts",
"import": "./lib/index.js"
},
"./package.json": "./package.json"
},
"files": [
"src", "lib", "client", "dist",
"skills", "tools",
"README.md", "CHANGELOG.md"
],
"keywords": ["zhin.js", "plugin"],
"peerDependencies": {
"zhin.js": ">=x.x.x"
},
"license": "MIT",
"repository": { "url": "..." },
"homepage": "...",
"author": "..."
}
插件市场识别条件:
name 以 zhin.js- 开头(社区)或 @zhin.js/ 开头(官方)
keywords 包含 zhin.js
peerDependencies 包含 zhin.js
第 2 步:代码质量检查
pnpm build
pnpm test
pnpm test:coverage
质量底线:
第 3 步:文档检查
README.md 必须包含:
CHANGELOG.md 必须包含:
关键词: 有 skills/ 目录时,确认 SKILL.md 的 description 准确描述插件能力。
第 4 步:构建产物检查
ls lib/
npm pack --dry-run
确认 npm pack 输出的文件列表:
- ✅ 包含
lib/(编译后的 JS + d.ts)
- ✅ 包含
src/(源码,供开发模式使用)
- ✅ 包含
skills/(AI 技能描述)
- ✅ 包含
README.md、CHANGELOG.md
- ❌ 不包含
node_modules/、tests/、.env
- ❌ 不包含
coverage/、.DS_Store
第 5 步:版本管理
语义化版本规则:
patch (0.1.0 → 0.1.1):bug 修复、文档更新
minor (0.1.0 → 0.2.0):新增功能、新增命令
major (0.1.0 → 1.0.0):破坏性变更、API 不兼容
npm version patch
pnpm changeset
pnpm changeset version
第 6 步:发布
npm publish --access public
npm publish --access public
首次发布:
- 确认已登录 npm:
npm whoami
- 如未登录:
npm login
- 确认包名未被占用:
npm view zhin.js-{name}
第 7 步:发布后验证
pnpm add zhin.js-{name}
常见问题
包名已被占用
- 社区插件前缀固定为
zhin.js-
- 如果被占用,考虑更具体的名称如
zhin.js-music-search
发布时 files 不对
- 检查
.gitignore 和 .npmignore
- 使用
npm pack --dry-run 预检
peerDependencies 版本范围
- 使用
>=x.x.x 而不是精确版本
- 确保与当前 zhin.js 最新版本兼容
失败与兜底
| 触发条件 | 一线处理 | 仍失败 |
|---|
tsc / test 失败 | 停止发布,先修或交 plugin-quality | 不得在红灯下 npm publish |
npm pack 缺文件 | 修 files 白名单与 .npmignore | 对照官方 adapter 的 package.json |
| 包名已占用 | 换更具体名如 zhin.js-music-search | npm view <name> 确认 |
| 无 npm 登录 | npm whoami;未登录则 npm login | 仅输出发布检查报告,不代发 |
🔴 CHECKPOINT · 发布确认
npm publish 前向用户确认:版本号、CHANGELOG、是否已跑完 test/coverage、npm pack --dry-run 结果。
不要做什么
- 不要发布含密钥、
.env、私服的 files 条目
- 不要跳过测试强行发 patch
- 不要把
tests/、coverage/ 打进 npm 包
- 不要对 scoped 包忘记
--access public
- 不要用本 skill 代替 Changeset 流程(monorepo 官方包)
检查清单(发布门禁)