npm registryとGithub Packgesを使ったPrivateリポジトリの公開手順
概要
モノレポ構成でプロジェクトが複数あるプロダクトの場合、共通のモジュールをnpm経由で取得して、モノリス構成にしたいというユースケースがある。
今回はnpm registryとGithub Packagesを使ったPrivateリポジトリの公開手順をまとめる
npm registryを使用する場合、npm公式で管理する方法とGitHub Packagesで管理する方法があるが、実際の案件に近いGitHub Packagesを使った手順をまとめる
Github Packges反映手順
1. 公開したいコードを含めたプロジェクトを作成し、Privateリポジトリとして作成する
2. Githubのアクセストークンを発行する
Personal Access Token(Classic)を作成しておく。作成する際には、以下の権限にチェックを入れる。
read:packages
write:packages
delete:packages
2. .npmrcを作成してGithubTokenを記載する
code:.npmrc
//npm.pkg.github.com/:_authToken=${NPM_TOKEN}
1行目はローカルの環境変数経由で取得するNPM_TOKENを指定
2行目は公開範囲を指定するために@share-moduleを記載
3. 作成しているProjectのpackage.jsonに以下を追加する
code:package.json
{
"name": "@share-package/module",
"version": "1.0.0",
"repository": {
"type": "git",
},
"main": "dist/index.js",
"files": [
"dist"
],
...
}
name: パッケージ名を指定する。パッケージ名にはプレフィックスをつける必要がある
version: バージョンをx.y.zで記載する。Github Packagesに反映させるときに、同じバージョンの場合はエラーになる。
repository: urlオプションのリモートリポジトリを指定する
main: メインファイルを指定。importして呼び出されたとき、最初に読み込まれるファイルを指定する。
files: 公開するディレクトリを指定する。上記の場合は、distディレクトリの公開対象としている。
上記の場合、npm install @share-package/module@1.0.0で追加できるようになる
ビルドするファイルについて
Github Packagesに公開するファイルは基本的にビルドしたファイル(ビルドしたJS + 型定義 + ソースマップ)が好ましい。
TypeScriptで公開すると、各環境でビルドした時のコードがバージョンによって差異が発生する可能性がある
JavaScriptで公開することによって、ビルドに依存しない。よって、どの環境でも同じ挙動を確保できる。
4. Github Packagesに公開する
2種類のやり方がある
Localから反映する方法
1. 以下のコマンドを実行して、zshrcに環境変数を反映する
code:bash
export NPM_TOKEN=発行したPersonal Access Tokenを指定
2. パッケージをビルドする
3. npm publishを実行で、Github Packgesに反映
GithubActionsで反映する方法
ワークフローファイル上でnpm publishを動かす処理を記載。プッシュしたタイミングで自動的にGithub Packagesに反映される
code:.github/workflows/publish.yml ※主要な部分だけを記載
on:
push:
branches:
- main
jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: write
packages: write
steps:
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
- name: Install dependencies
run: npm ci
- name: Build package
run: npm run build
- name: Publish to GitHub Packages
run: npm publish
env:
NPM_TOKEN: ${{ secrets.GITHUB_TOKEN }} // Personal Access Tokenが自動反映
公開したGithub Packges利用手順
1. 公開したGithubPckagesをインストールするために、インストールしたいプロジェクト配下に先ほどと同じ.npmrcを作成する。Personal Access Tokenも指定する
code:.npmrc
//npm.pkg.github.com/:_authToken=${NPM_TOKEN}
2. 公開したGithub Packagesにアクセスするための、Personal Access Token(Classic)を作成する。権限は、read:packagesだけに限定したトークンを作成する。
3. .npmrcに作成したトークンを反映させるために、以下のコマンドで環境変数に反映する
code:bash
export NPM_TOKEN=発行したPersonal Access Tokenを指定
4. npm install @share-package/module@1.0.0でライブラリをインストールする
参考