この投稿では、YarnでGitHubプライベートリポジトリへの依存を追加する方法を説明します。
使用するYarn
本稿で説明する手順はYarn v1.22.17を前提とします。Yarn v2、v3ではやり方が異なるかもしれません。未検証です。
YarnでGitHubプライベートリポジトリをyarn addする方法
プライベートリポジトリのURLを取得する
依存に追加したいGitHubプライベートリポジトリを開き、「Code」→「SSH」タブからGitのURLをコピーします。
次の形式のURLが得られるはずなので控えておきます。
git@github.com:ORG/REPO.git
どのGitブランチやコミットに依存したいか決める
YarnではGitリポジトリへの依存を追加する際、ブランチやコミットハッシュを指定できます。
その場合、上で得られたURLに#
でブランチ名を指定します。
git@github.com:ORG/REPO.git#BRANCH_NAME_OR_HASH
たとえば、mainブランチへの依存であれば次のようになります。
git@github.com:ORG/REPO.git#main
パッケージ名を決める
yarn add
でGitHubリポジトリへの依存を追加した場合、パッケージ名はリポジトリ名になります。たとえば、GitHubリポジトリがmy-company/my-project
の場合、package.jsonには"my-project"
として追加されます。
{
"dependecies": {
"my-project": "git+ssh://github.com/...",
たとえば、極端な例ですが、自社のリポジトリ名がmy-company/typescript
だったりすると、Microsoftのtypescriptとバッティングするので、そういった場合はパッケージ名をかぶらないものにする必要があります。
パッケージ名はなんでも構いませんが、おすすめは会社名などをスコープにしたものです:
@SCOPE/MODULE
たとえば、会社名がcraftsman-softwareでリポジトリ名がcommonなら次のような形式にします。
@craftsman-software/common
Yarnが解決可能な形式を組み立てる
上で作った文字列$URL
と$PKG
を使って、yarn add
が解釈できる文字列を組み立てます。
"$PKG@git+ssh://$URL"
たとえば、$PKG
が@craftsman-software/common
で、$URL
がgit@github.com:craftsman-software/common.git#main
の場合、次の文字列になります。
"@craftsman-software/common@git+ssh://git@github.com:craftsman-software/common.git#main"
yarn add
する
あとは、上で得られた文字列を引数にyarn add
するだけです:
yarn add "$PKG@git+ssh://$URL"
これを実行すると、通常のNPMモジュールと同じようにnode_modules
にコードがインストールされます。
おまけ
パッケージをアップグレードする方法
main
ブランチを指定するなどしてyarn add
した場合に、ブランチをアップデートしたい場合は、yarn upgrade
を実行するだけです。
yarn upgrade $PKG
たとえば、@craftsman-software/common
という名前でyarn add
したのであれば、
yarn upgrade @craftsman-software/common
とすると、最新のコミットを取得してインストールしなおしてくれます。