😉
【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