Note

特定の組織、個人アカウント内でのみ利用できるNPMパッケージをGithub Packagesを利用して作成する。

手順

package.jsonを設定

パッケージとして公開するために以下の項目を追加する。

{
  "name": "@<ユーザー名>/<リポジトリ名>",
  "version": "0.0.1",
  "publishConfig": {
    "@<ユーザー名>:registry": "https://npm.pkg.github.com/<@ユーザー名",
  },
  ...
}

Warning

publishConfigを設定するほかに.npmrcを利用して設定する方法もある。

npmレジストリの利用 - GitHub Docs

Github Actionsのワークフローを作成

以下のようにrelease.yamlを設定した。新しくリリースを作成するとPackageを公開してくれる。

name: Release to GitHub Package Registry
 
on:
  release:
    types: [created]
 
jobs:
  publish-gpr:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      packages: write
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: 21 
          registry-url: https://npm.pkg.github.com/
      - run: npm install
      - run: npm run build
      - run: npm publish
        env:
          NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}

パッケージの利用

Privateなパッケージを利用する場合、パッケージの設定からアクセス可能なレポジトリを指定してあげる必要がある。

また.npmrcに以下のように記述し、Personal Access Tokenを利用してGithub Packageを取得できるようにする。 Personal Access Tokenにはread_packageの権限を付与。

@<ユーザー名>:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=${PERSONAL_ACCESS_TOKEN}

参考

GitHub Packagesを使用してprivateなnpmパッケージとして公開する GitHub Packages の概要 - GitHub Docs モデルの型定義ファイル(TypeScript)を共有モジュール化してGitHub Packages(npmレジストリ)で配信する 型定義リポジトリをGitHub Packagesで社内限定公開する(yarnでもnpmでも) Node.js - Qiita npmレジストリの利用 - GitHub Docs