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 进行身份验证。

  1. 将你的包 链接到 npm 设置中的仓库和工作流文件。
  2. 在 CI/CD 流水线中配置 OIDC,请求一个短期身份 token。
  3. 使用 npm publish 命令发布;如果请求来自受信任的来源,npm 将接受发布。

此方法在初始设置完成后几乎无需维护,并且因为没有持久化 token 存储,安全性更高。

结论

通过使用 npm CLI 自动化 token 轮换或在 CI/CD 流水线中利用 OIDC,你可以在无需手动管理 token 的情况下持续发布包。两种方法都简化了工作流并提升了安全性。

Back to Blog

相关文章

阅读更多 »

踏入 agentic coding

使用 Copilot Agent 的经验 我主要使用 GitHub Copilot 进行 inline edits 和 PR reviews,让我的大脑完成大部分思考。最近我决定 t...