はじめに
npm は GitHub や BitBucket を npm パッケージの置き場所に指定できます。
ここではその方法について説明します。
プライベートリポジトリの場合
自作の npm パッケージを開発しているとき、開発したリソースをプライベートな場所に置きたい場合があります。
プライベートリポジトリの場合は認証を通す必要があるのですが、やり方が2通りあって、以下のようにします:
1. SSH config に github.com の接続情報を登録しておく
Host github.com
User git
Port 22
Hostname github.com
IdentityFile ~/.ssh/id_rsa
TCPKeepAlive yes
IdentitiesOnly yes
ここでは方法は紹介しませんが、事前に個人認証用のキーペアを生成しておき、秘密鍵を ~/.ssh/id_rsa
におきます。
また、 GitHub に public キーを登録しておきます。
2. アクセストークンをつかう
以下の方法で事前にアクセストークンを取得しておきます。
https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line
package.json
の dependencies
に以下のように指定します:
"package-name": "git+https://<github_token>:x-oauth-basic@github.com/<user>/<repo>.git"
たいてい package.json
は Git 管理するため、アクセストークンを埋め込みたくないと思うので、1の方法を使うのが一般的だと思います。
GitHubリポジトリを指定する (基本)
package.json
の dependencies
に以下のように指定します。
git+ssh://git@github.com/<user>/<repo>.git#[branch|tag|commit]
常に最新のmasterを参照させる場合
最新の master に固定されます。
ただし、 package-lock.js にはコミットIDが含まれるので、リモートを更新したら npm update
が必要。
"dependencies": {
"hikyaku-lib": "git+ssh://git@github.com/<user>/<repo>.git"
}
タグを指定する場合
v3.0.0
というタグのついたコミットに固定します
"dependencies": {
"hikyaku-lib": "git+ssh://git@github.com/<user>/<repo>.git#v3.0.0"
}
コミットを指定する場合
"dependencies": {
"hikyaku-lib": "git+ssh://git@github.com/<user>/<repo>.git#8a9bb6d32a6899ccecd6ba0b6cfff330a37bbbb6"
}
ブランチを指定する場合
"dependencies": {
"hikyaku-lib": "git+ssh://git@github.com/<user>/<repo>.git#dev"
}
セマンティックバージョニングを指定する場合
"dependencies": {
"hikyaku-lib": "git+ssh://git@github.com/<user>/<repo>.git#semver:^2.0.0"
}