ローカルのgitリポジトリからnpmインストールする
とてもニッチなnpm installとyarn add
あまりにも実用性がない
httpsもsshも介さずにgitリポジトリからnpmパッケージをインストールする方法はある。
1. fileスキーム的なあれでgitリポジトリからインストールする
- gitリポジトリからインストールするのでpackage.jsonに書かれたprepareスクリプトが動く。 prepare スクリプトは devDependencies に書かれたモジュールをインストールして動いてくれる。
- git管理下のファイルだけがコピーされる。(node_modules以下が無駄にコピーされないことがえらい。)
- 作業用のリポジトリでも
git init --bare --shared
で作ったリポジトリでもなんでも指定できる。 - ファイルサーバーに置いたリポジトリからインストールできる。
D:\path\to\mylib └.git または D:\path\to\mylib ├hooks ├info ├objects ├refs ├config ├description └HEAD
みたいなところからインストールする。
npm install
# 絶対パス指定 npm install git+file:///D:\path\to\mylib npm install git+file:///D:/path/to/mylib # 相対パス指定...できない? # IPアドレスでUNCパスを指定 npm install git+file:///\\192.168.1.1\path\to\mylib npm install git+file:///\\192.168.1.1/path/to/mylib # ファイルサーバーの名前(例えばserverとする)でUNCパスを指定 npm install git+file:///\\server\path\to\mylib npm install git+file:///\\server/path/to/mylib # いずれの方法も package.json に絶対パスやIPアドレス、ファイルサーバー名などが残ることに注意 # "dependencies": { # "mylib": "git+file:///\\\\192.168.1.1\\path\\to\\mylib" # }
yarn add
npm と違い、 git+file:///
ではなく git+file:
とする。
# 絶対パス指定 yarn add git+file:D:\path\to\mylib yarn add git+file:D:/path/to/mylib # 相対パス指定 yarn add git+file:..\path\to\mylib yarn add git+file:../path/to/mylib # IPアドレスでUNCパスを指定...できない? # ネットワークドライブに割り当てて絶対パス指定すればyarn addできる。 # ファイルサーバーの名前でUNCパスを指定...できない? # ネットワークドライブに割り当てて絶対パス指定すればyarn addできる。
ファイルサーバー補足
ファイルサーバーのIPアドレスが192.168.1.1で名前がserverだとする。通常、エクスプローラー等でファイルサーバーにアクセスするときには\\192.168.1.1\path\to\your\file
だとか\\server\path\to\your\file
のようにUNCパスと呼ばれる方法でパスを書く。ファイルサーバーに置かれたgitのリモートリポジトリからnpm installできる。ただし、ファイルサーバーでユーザー認証の必要がある場合には下記コマンドを打つ前に認証を通しておかなくてはいけない。ファイルサーバーをネットワークドライブに割り当てればUNCパスを使わなくていい。
2. fileスキーム的なあれでpackage.jsonを含むフォルダからインストールする
- ググるとよく見つかる方法。
- package.jsonに書かれたprepareスクリプトが 動かない 。よくない。
- gitリポジトリとは無関係に単純に指定したパスのフォルダをごっそりインストール先のnode_modulesフォルダにコピーしてくる。
- インストール元のnode_modulesフォルダが無駄にコピーされる。よくない。
D:\path\to\mylib ├node_modules ├package.json └index.js
みたいなところからインストールする。
npm install
# 絶対パス指定 npm install file:///D:\path\to\mylib npm install file:///D:/path/to/mylib npm install D:\path\to\mylib npm install D:/path/to/mylib # 相対パス指定 npm install file:///..\path\to\mylib npm install file:///../path/to/mylib npm install ..\path\to\mylib npm install ../path/to/mylib # 絶対パスは相対パスに変換されて package.json に書かれる。
yarn add
npm と違い、 file:///
ではなく file:
とする。
# 絶対パス指定 yarn add file:D:\path\to\mylib yarn add file:D:/path/to/mylib yarn add D:\path\to\mylib yarn add D:/path/to/mylib # 相対パス指定 yarn add file:..\path\to\mylib yarn add file:../path/to/mylib # yarn add ..\path\to\mylib # この指定方法はダメ yarn add ../path/to/mylib # 絶対パスは相対パスに変換されないでそのまま package.json に書かれる。
デバッガーか何かですか?