ローカルにある別の npm パッケージを参照する
npm レジストリに Publish されていない、ローカルにのみ存在する npm パッケージを、別のプロジェクトで参照利用する方法を調べた。
以前は npm link
を使う手法があったが、それよりももう少し簡単にやる方法があった。
package.json
の dependencies
ないしは devDependencies
にて、file:../my-local-package
という風に、使いたいパッケージがあるディレクトリへの相対パスが書ける。
{
"name": "my-app",
... (中略) ...
"dependencies": {
"my-local-package": "file:../my-local-package"
},
... (中略) ...
}
そして $ npm install
すると、./node_modules/my-local-package/
がシンボリックリンクになってくれる。
あとは通常どおりアプリ内で require
なり import
なりして使えば OK。
// 「利用アプリ」内のコード
import helloWorld from 'my-local-pkg';
console.log(helloWorld('Yo'));
dependencies
内の Key 部分が、require()
で書く Key 文字列と一致すれば良い。対象のパッケージ側の package.json
に記載した name
とは一致していなくても良いようだ。混乱するので名前は合わせておくに越したことはないが…。
また、シンボリックリンクで扱われるので、対象のパッケージ側の資材をリビルドしたりすれば、利用側では npm install
をやり直すことなく、変更が反映されて楽チン。
プライベート npm レジストリを使えない環境で、Publish はしたくないけどパッケージは分割したい、という時に使えそう。