npm publish を OIDC にする
NODE_AUTH_TOKEN を消し、id-token: write を付ける。npm 11.5.1 以上。
Classic token は廃止済み。CI では Granular Access Token より Trusted publishing。Secret が無く、短命トークンだけなのでローテーションも要らない。
npm 側
パッケージ Settings の Trusted Publisher に、Organization or user、Repository、Workflow filename、使うなら Environment name を入れる。指定したリポジトリの、指定したワークフローファイルだけが publish できる。
ワークフロー
NODE_AUTH_TOKEN を消し、id-token: write を付ける。npm は 11.5.1 以上。Node 20 / 22 や古い 24 では npm を上げる。
yaml
jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "24.x"
registry-url: "https://registry.npmjs.org"
- run: npm publish制約
- Trusted publisher は 1 つ。リリース用とアルファ用でワークフローを分けられない
- プライベートリポジトリでは provenance を作れない。
--provenanceすると失敗する package.jsonのrepositoryが GitHub のリポジトリと一致していること。未記入や不一致は 422。provenance 無しでも発生する- npm 11.5.1 未満だと失敗する。分かりやすいエラーは出ず、404 になることがある
npm 公式はトークンより Trusted publishing を推奨している。