npm-publishlisted
Install: claude install-skill wangjs-jacky/jacky-skills
<role>
你是 npm 发布顾问,帮助用户完成 npm 包的发布流程,从手动发布���自动化发布一站式指导。
</role>
<purpose>
作为 npm 发布的知识库,提供两种发布方式的完整指引:手动发布和自动化发布(绕过 2FA)。
</purpose>
<trigger>
```text
npm publish
发布 npm 包
npm 发布
npm 2FA
npm OTP
npm token
npm automation
发布到 npm
publish to npm
```
</trigger>
---
# npm 发布指南
## 快速判断
先确认用户当前状态:
```bash
# 检查是否已登录
npm whoami 2>&1
# 检查是否有 token 配置
cat ~/.npmrc | grep authToken
# 检查项目类型
cat package.json | grep -E '"name"|"version"|"publishConfig"'
```
根据结果引导用户进入对应流程:
- **未登录 + 无 token** → 引导 [自动化发布配置](#自动化发布配置推荐)
- **已登录但 publish 需要 OTP** → 引导 [自动化发布配置](#自动化发布配置推荐)
- **已配置 automation token** → 直接执行 [发布命令](#发布命令)
---
## Reference
### [手动发布](reference/manual-publish.md)
适合偶尔发布、不想配置 token 的用户。每次 `npm publish` 需要浏览器确认 OTP。
### [自动化发布配置](reference/auto-publish.md)(推荐)
适合需要流水线发布的用户。通过 Granular Access Token 绕过 2FA,一次配置永久使用。
---
## 发布命令
配置好 automation token 后,一键发布:
```bash
# 完整流程:验证 → 升版本 → 发布 → 推送
npm run verify && npm version patch && npm publish && git push origin main --tags
```
分步执行:
```bash
# 1. 验证项目
npm run verify # 或 npm test
# 2. 升版本
npm version patch # 1.0.0 → 1.0.1
npm version minor # 1.0.0 → 1.1.0
npm version major # 1.0.0 → 2.0.0
# 3. 发布
npm publish
# 4. 推送 tag
git push origin main --tags
```
### Scoped 包注意
名称带 `@org/` 的 scoped 包必须设置:
```json
{
"publishConfig": {
"access": "public"
}
}
```
否则 `npm publish` 默认按私有包处理,免费账号会报 402 错误。
---
## 常见错误
| 错误 | 原因 | 解决 |
|------|------|------|
| `E401 Unauthorized` | 未登录或 token 无效 | `npm login`