30歳からのプログラミング

30歳無職から独学でプログラミングを開始した人間の記録。

パブリッシュしていない npm ライブラリをプロジェクトで使う方法

社内プロジェクトなどで、共通の処理をライブラリとして切り出したいが、そのライブラリもクローズドにしたいのでパブリッシュできない。というケースを想定している。

package.jsonは、ライブラリのGitリポジトリのパスを指定することも出来るので、それを利用する。
プライベートリポジトリでも問題なく動く。

この記事では、GitのホスティングサービスとしてGitHubを用いる。

リポジトリのパスを指定してインストールする

題材として、私が公開しているeslint-config-numbをインストールしてみる。

以下でインストールできる。

$ yarn add -D git+https://github.com/numb86/eslint-config-numb.git

$ cat node_modules/eslint-config-numb/package.jsonでインストールされたpackage.jsonを確認してみると、現時点での最新バージョンである2.0.0が入っていることが分かる。

末尾に#{TAG_NAME}をつけることでタグを指定することも出来る。
以下のコマンドを打つと、1.xの最新バージョンである1.0.2が入る。
もちろん#1.0.1のようにパッチバージョンまで明示的に指定することも出来る。

$ yarn add -D git+https://github.com/numb86/eslint-config-numb.git#1

プライベートリポジトリ

プライベートリポジトリでも、全く同じように利用できる。

念の為、認証していないユーザーではインストールできないことを確認してみる。

自分の環境(macOS Mojave 10.14.2)では GitHub のパスワードは「キーチェーンアクセス.app」に保存されている。
「キーチェーンアクセス.app」は以下のコマンドで開ける。

$ open /Applications/Utilities/Keychain\ Access.app

一覧の中からgithub.comを探して、削除する。

この状態でプライベートリポジトリをインストールしようとするとエラーになる。

fatal: could not read Username for 'https://github.com': terminal prompts disabled

再び「キーチェーンアクセス.app」にパスワードを登録するためには、適当なリポジトリpushpullをすればユーザー名とパスワードを求められるので、それを入力すると「キーチェーンアクセス.app」にも保存される。

参考資料