Note
特定の組織、個人アカウント内でのみ利用できるNPMパッケージをGithub Packagesを利用して作成する。
手順
package.json
を設定
パッケージとして公開するために以下の項目を追加する。
{
"name": "@<ユーザー名>/<リポジトリ名>",
"version": "0.0.1",
"publishConfig": {
"@<ユーザー名>:registry": "https://npm.pkg.github.com/<@ユーザー名",
},
...
}
Warning
publishConfig
を設定するほかに.npmrc
を利用して設定する方法もある。
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