npm linkでローカルのnpmパッケージを参照できた

目次
  1. やりたかったこと
  2. npm linkでローカルのnpmパッケージを参照させる
  3. ローカルの参照が不要になった場合

最近知ったnpm linkというものについて書いてみようと思います。

やりたかったこと

とあるnpmパッケージの実装を変更した後、npm publish前にパッケージをimportしている別プロジェクト側から動作が確認したいというケースがありました。

具体的には、プロジェクト側でimport MyPackage from '@hogefuga/my-package'という形で参照しているという状態において、ローカルでMyPackageを変更した場合の動作確認をしたいという状況でした。

npm linkでローカルのnpmパッケージを参照させる

npm linkの仕様は下記公式に載っています。

https://docs.npmjs.com/cli/v8/commands/npm-link

以下の手順でコマンドを叩くとやりたいことが実現できました。

  • ローカルのnpmパッケージのルートパスでnpm linkを実行する。
    • npmのグローバルにシンボリックリンクが作成されます。
  • パッケージを参照しているプロジェクトのpackage.jsonの存在するパスでnpm link {パッケージ名}を実行する。
    • グローバルに作られたシンボリックリンクへのシンボリックリンクが作成されます。これによりnpm linkで指定したパッケージは、ローカルのnpmパッケージを参照するようになります。

ローカルの参照が不要になった場合

参照側のプロジェクトでnpm installし直すことで、publishされたパッケージを参照するよう戻せます。

無用な混乱を避ける為、動作確認を終えたら戻すように癖付けしておいた方が良いかもしません。