// 📆 January 30, 2021
GitHub Package Registry がとても便利だよという話の第二弾。前回の記事は 「GitHub Package Registry の認証を通して yarn install する」で、private なパッケージを手元に取り込む方法について解説しました。今回の記事では、パッケージをどのように公開するのかについて解説したいと思います。
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 なパッケージのみ管理するのがオススメです。)
手元で 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 }}
🦥(筆者が喜びます)