😉

【Github Packages】npm publish時に401 Unauthorizedとなったときの対処法

に公開

個人的に作っているプロジェクトでも、規模が大きくなるとパッケージを自作したくなります。(個人差あり)
ただ、公開はしたくありません。
npmjs.orgだと非公開のパッケージを作るためにお金が必要ですが、Github Packagesの場合はPublic・Privateともに無料です(!!)

なので使ってみたのですが、認証周りで躓いてしまいました。

npm error 401 Unauthorized - PUT https://npm.pkg.github.com/@foo%2fprivatepackage - unauthenticated: User cannot be authenticated with the token provided.

GITHUB_TOKENの権限が問題なのかな?と探ってみるも変わらず、調べていくと.npmrcの設定に問題があったようです。(参考 - github.com/orgs/community/discussions/45097)

【解決策】.npmrcに認証情報を書き込む

Publishする前に、このようなステップを用意してあげましょう。

- name: Define .npmrc
  run: |
    echo "@username:registry=https://npm.pkg.github.com" >> .npmrc
    echo "//npm.pkg.github.com/:_authToken=${{ secrets.GITHUB_TOKEN }}" >> .npmrc

意外と簡単でしたね!

Discussion