次のふたつを初めて試したので、その時の備忘録です。
- registry に GitHub Packages を使う
- private で publish する
公開するための Node.js モジュールを用意
まずはモジュールを用意する。ここはあまり重要ではないので、Creating Node.js modules | npm Docs を参考に用意した。スコープを設定したいので npm init
時にオプションで指定する。
npm init --scope=@kasaharu
GitHub Actions で GitHub Packages に publish する
「Publish Node.js Package to GitHub Packages」 という GitHub Packages に publish する workflow が用意されているのでこれを参考にする。
デフォルトでは以下の設定になっている。
# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created # For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages name: Node.js Package on: release: types: [created] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: node-version: 16 - run: npm ci - run: npm test publish-gpr: needs: build runs-on: ubuntu-latest permissions: contents: read packages: write steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: node-version: 16 registry-url: https://npm.pkg.github.com/ - run: npm ci - run: npm publish env: NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
workflow はほぼこのままで使用可能だった。
GITHUB_TOKEN
も自分で secrets に登録する必要があるのかと思ったが、これはリポジトリの操作権限を持った token として GitHub Actions を使うときに有効化されるものらしい。
詳細については 自動トークン認証 - GitHub Docs で詳しく説明されている。
GitHub Actions が実行されると以下のようにパッケージが公開される。
公開した private package を使う
npmレジストリの利用 - GitHub Docs を参考に使う側の設定をする。
GitHub Packages を registry に使うことがわかるように .npmrc
を用意して設定する。
@kasaharu:registry=https://npm.pkg.github.com
また private package をインストールするため認証が必要となる。今回は GitHub の personal access token を用意して指定している。 personal access token の作り方は 個人用アクセス トークンの作成 - GitHub Docs にある。
package のダウンロードができればよいので必要な権限は read:packages
となる。
発行した token を環境変数に登録して .npmrc
に以下の設定を追加する。
//npm.pkg.github.com/:_authToken=${NODE_AUTH_TOKEN}
あとは作ったパッケージを npm install
で指定することで使えるようになる。
まとめ
GitHub Docs のボリュームが多いので探すのは大変だが、ドキュメントを見つけることができれば問題なく設定できた。無料アカウントでも private で npm package を公開できるので、色々と使いみちがありそう。