ローカルにある別の 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 はしたくないけどパッケージは分割したい、という時に使えそう。