npm Classic Tokens 已不再:两种低维护方式保持发布
发布: (2026年1月20日 GMT+8 17:49)
3 min read
原文: Dev.to
Source: Dev.to
背景
npm 最近宣布经典 npm token 将被弃用并撤销。所有人必须迁移到包含过期日期的细粒度 token。对于发布/写入的使用场景,这实际上意味着需要定期轮换。
在 UI 中甚至没有续期 token 的选项——每次都必须创建一个新 token(并删除旧的)。
两种低维护成本的持续发布方式
1. 使用 npm CLI 自动化 token 轮换
你可以编写脚本来创建和撤销 token,然后按计划运行它(例如,每 90 天一次)。一个简单示例:
# renew-token.sh
# Create a new token with publish permissions
npm token create --read-write --expires=90d
# (Optional) Delete the old token if you have its ID
# npm token revoke
在 package.json 中添加脚本条目:
{
"scripts": {
"renew-token": "bash renew-token.sh"
}
}
运行方式:
npm run renew-token
这样就不需要每次 token 过期时在 npm 网站上手动点击。
2. 在 CI/CD 中使用 OpenID Connect (OIDC)
如果你的工作流运行在 GitHub Actions、GitLab CI/CD 或其他支持 OIDC 的平台上,你可以在不存储长期 token 的情况下对 npm 进行身份验证。
- 将你的包 链接到 npm 设置中的仓库和工作流文件。
- 在 CI/CD 流水线中配置 OIDC,请求一个短期身份 token。
- 使用
npm publish命令发布;如果请求来自受信任的来源,npm 将接受发布。
此方法在初始设置完成后几乎无需维护,并且因为没有持久化 token 存储,安全性更高。
结论
通过使用 npm CLI 自动化 token 轮换或在 CI/CD 流水线中利用 OIDC,你可以在无需手动管理 token 的情况下持续发布包。两种方法都简化了工作流并提升了安全性。