最近知ったnpm linkというものについて書いてみようと思います。
やりたかったこと
とあるnpmパッケージの実装を変更した後、npm publish前にパッケージをimportしている別プロジェクト側から動作が確認したいというケースがありました。
具体的には、プロジェクト側でimport MyPackage from '@hogefuga/my-package'
という形で参照しているという状態において、ローカルでMyPackageを変更した場合の動作確認をしたいという状況でした。
npm linkでローカルのnpmパッケージを参照させる
npm linkの仕様は下記公式に載っています。
以下の手順でコマンドを叩くとやりたいことが実現できました。
- ローカルのnpmパッケージのルートパスで
npm link
を実行する。- npmのグローバルにシンボリックリンクが作成されます。
- パッケージを参照しているプロジェクトのpackage.jsonの存在するパスで
npm link {パッケージ名}
を実行する。
ローカルの参照が不要になった場合
参照側のプロジェクトでnpm install
し直すことで、publishされたパッケージを参照するよう戻せます。
無用な混乱を避ける為、動作確認を終えたら戻すように癖付けしておいた方が良いかもしません。