GitHub Package Registry にパッケージを公開する

📆January 30, 2021🔖

GitHub Package Registry がとても便利だよという話の第二弾。前回の記事は 「GitHub Package Registry の認証を通して yarn install する」で、private なパッケージを手元に取り込む方法について解説しました。今回の記事では、パッケージをどのように公開するのかについて解説したいと思います。

公開したいパッケージの package.json を編集する

package.json に以下のようなコードを追加します。

"publishConfig": {
  "registry": "https://npm.pkg.github.com/"
},
"repository": {
  "type": "git",
  "url": "git@github.com:[チーム名 or アカウント名]/[リポジトリ名].git"
},

npm publish コマンドで公開するときのレジストリが、デフォルトだと npm のレジストリを向いているので、それを github package registry に向き先を変えてやる必要があります(これをしないと、www.npmjs.com にパッケージが公開されてしまいます)また、対象となる repository を指定します。これが誤っているとエラーになります。

その他の設定については、npm にパッケージを公開する場合と同様なのでここでは詳細な説明は割愛します(追記:これだけはよくあるので書いておく → チームで管理する場合には、name は @[チーム名]/[パッケージ名] とするのが慣例です)

公開したパッケージを確認する

npm publish コマンドを叩けば、github package registry に公開されます。公開されたパッケージは、Packages タブに表示されます。public / private に関しては、リポジトリの設定に依存します。private なリポジトリは、public にして公開することはできません(公開したいパッケージは npm に公開すると思うので、そのようなユースケースはあまりなさそうですが。基本的に、チーム内で使用する private なパッケージのみ管理するのがオススメです。)

公開されたパッケージ
公開されたパッケージ

GitHub Actions による自動化

手元で npm publish コマンドを叩くと、想定外のタイミングで公開されてしまったり、ログを追いづらかったりと、問題があるため、CI(ここでは GitHub Actions)を用いて自動化することをオススメします。以下、サンプルです。

name: Node.js Package
on:
  release:
    types: [created]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    # GitHub パッケージに公開する .npmrc ファイルを設定する
    - uses: actions/setup-node@v1
      with:
        node-version: '12.x'
        registry-url: 'https://npm.pkg.github.com'
        # デフォルトはワークフローファイルを所有するユーザまたは Organization
        scope: '@octocat'
    - run: npm install
    - run: npm publish
      env:
        NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

参考

  • GitHub Packagesへのパッケージの公開 (公式ドキュメント)