npmにpublishされているモジュールの開発時に動作確認する時どうするんだろうと思って調べてみたら npm link
という便利なコマンドがあった
使い方
開発するモジュール(例:redux)のディレクトリ配下で npm link
と叩くと prepublish
が走った後グローバルな
node_modules
にシンボリックリンクが作成される
~/sandbox/github.com/reactjs/redux (master ✔) ᐅ npm link
> redux@3.6.0 prepublish /Users/yamamoto/sandbox/github.com/reactjs/redux
> yarn run clean && yarn run lint && yarn test && yarn run build && check-es3-syntax lib/ dist/ --kill --print
# 略 (npm script)
/Users/yamamoto/.nodenv/versions/6.10.1/lib/node_modules/redux -> /Users/yamamoto/sandbox/github.com/reactjs/redux
動作確認したいディレクトリで npm link redux
と叩く
~/sandbox/github.com/reactjs/redux/examples/todos-flow (master ✔) ᐅ npm link redux
/Users/yamamoto/sandbox/github.com/reactjs/redux/examples/todos-flow/node_modules/redux -> /Users/yamamoto/.nodenv/versions/6.10.1/lib/node_modules/redux ->
/Users/yamamoto/sandbox/github.com/reactjs/redux
node_modules
にシンボリックリンクが作成される
~/sandbox/github.com/reactjs/redux/examples/todos-flow (master ✔) ᐅ ll node_modules | grep redux
drwxr-xr-x 11 yamamoto staff 374B 4 21 17:17 react-redux
lrwxr-xr-x 1 yamamoto staff 67B 4 21 19:12 redux -> ../../../../../../../.nodenv/versions/6.10.1/lib/node_modules/redux
yarnの場合
yarn の場合もっと良くて、単に yarn link
したディレクトリへのシンボリックリンクになる(相対パス)
~/sandbox/github.com/reactjs/redux (master ✔) ᐅ yarn link
yarn link v0.22.0
success Registered "redux".
info You can now run `yarn link "redux"` in the projects where you want to use this module and it will be used instead.
✨ Done in 0.16s.
~/sandbox/github.com/reactjs/redux/examples/todos-flow (master ✔) ᐅ yarn link redux
yarn link v0.22.0
success Registered "redux".
✨ Done in 0.17s.
~/sandbox/github.com/reactjs/redux/examples/todos-flow (master ✔) ᐅ ll node_modules | grep redux
drwxr-xr-x 11 yamamoto staff 374B 4 21 17:17 react-redux
lrwxr-xr-x 1 yamamoto staff 8B 4 21 19:33 redux -> ../../..
これでnpmモジュール開発が捗りますね。