はじめに
なんと、2019年5月10日からGitHub上でパッケージの公開ができるようになっていたみたいです(2019/11/13より正式版に)。
そのプロダクト名は、 GitHub Packages です。
さらには、GitHub Actions を使い、GitHub上でパイプラインを構築でき、CI/CDを動かせるようになってきました。
これにより管理しなければならないTOKEN情報を減らすことができ、WebUIも共通のものを使うことができるようになるなどのメリットがあります。
そんなメリットを享受すべく、GitHubでnpmのパッケージを公開する方法を学びました。
事前準備
npmコマンドでGitHubにログインする
まず、以下のページからnpmレジストリ用のTOKENを発行してください。
https://github.com/settings/tokens/new
必要な権限は、 repo
read:packages
write:packages
です。
この3つは最低限付けてください。
この発行したTOKENを使って、npmコマンドでログインします。
そのコマンドは以下になります。
npm login --registry=https://npm.pkg.github.com/ --scope=(GitHubのユーザー名)
> Username: (GitHubのユーザー名)
> Password: (先ほど作成したTOKEN)
> Email: (レジストリの連絡先メールアドレス)
# 確認方法
npm whoami --registry=https://npm.pkg.github.com/ --scope=(GitHubのユーザー名)
# GitHubのユーザー名が出力されればOK
npm v9以降は、ログイン時に --auth-type=legacy
を付ける必要があります。
npmコマンドにレジストリを登録する
npm config set @(GitHubのユーザー名):registry https://npm.pkg.github.com/
公開する
npm publish
他のリポジトリに追加する
yarn add @(GitHubのユーザー名)/(パッケージ名) --update-checksums
もし異なる環境でパッケージを追加する場合は、事前準備 を参考に、npmコマンドでのログインやレジストリ登録を行ってください。
追加時にエラーが発生する。
普通に yarn add
しても追加することができません。
以下のようなエラー文が表示されます。
error https://npm.pkg.github.com/download/@(GitHubのユーザー名)/(パッケージ名)/(バージョン)/(ハッシュ値): Integrity checked failed for "@(GitHubのユーザー名)/(パッケージ名)" (none of the specified algorithms are supported)
そこで使用するのが、 --update-checksums
というオプションです。
上記のエラーは、ローカルとリモートの間で、chucksum値が異なる場合に発生するようです。
そのため、 --update-checksums
を使い、ローカルのchucksum値を更新することでこのエラーは解決します。
なお、このエラーはnpmコマンドでパッケージを追加する場合では、発生しないようです。
この記事では、yarnコマンドでパッケージ管理を行っている場合は気を付けてください。
おわりに
GitHubがMicrosoftに買収されたときは、あちこちであれこれ騒いでいましたが、実際にはアップデート速度が高まり、Microsoftの『OSS推進』と『開発者を支援する』という考えにより、より開発者に優しいプロダクトになったように感じます。
『GitHub Packages』と『GitHub Actions』の2つを使うことで、誰でも簡単にCI/CDを行えるようになりました。これは個人に対しても中小企業に対しても大きな影響を及ぼすでしょう。
モバイル側でもGitHubに動きがあるので、今後も「Microsoft」のGitHubが楽しみです。