在 npmjs 官网可以看到消息,之前老的 access token 将会被禁用,现在需要使用 granular access tokens。而这个新创建的 granular access tokens 会自动过期,每隔几十天就要重新生成一次 token,这也太变态了吧!
如果你使用 GitHub / GitLab 的自动构建工具,就不用担心,现在没有 access token 也可以自动发布到 npm,并且还会有这样一个 badge

怎么设置呢?以我的 u301 包为例讲解。
第一步:在 npm 包设置里正确设置 Trusted Publisher
主要是正确设置 workflow 的文件名。至于 Environment name 是多人协作时使用,假设 commit 是不受信的用户时,可以添加额外审批步骤。如果你只有一个人,可以留空。
第二步:添加 publish.yml
我的例子可以在这里找到完整文件:https://github.com/u301-shortener/u301-js/blob/main/.github/workflows/publish.yml
重点是这个
name: Publish to npm
on:
push:
# 只有 git tag 带 v 开头的版本号才会自动发布
tags:
- "v*"
jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: read
# 这里添加的 id-token 可以让最后一行 `npm publish` 无需 access token 就能发布。
id-token: write
steps:
# ......
- name: Publish to npm
uses: actions/setup-node@v4
with:
node-version: '24'
registry-url: 'https://registry.npmjs.org'
- run: npm publish --provenance
第三步:发布
推送完这个 GitHub action 文件后,只要每次在 package.json 增加下版本号,然后
git tag git tag v1.0.0
git push --tags
就能触发自动发布