はじめに
NVM_SYMLINK_CURRENTというnvmの便利なオプションの存在を知ったので簡単にまとめました。
NVM_SYMLINK_CURRENTの概要
環境変数NVM_SYMLINK_CURRENTをtrueに設定すると、nvm use
コマンドでnodeバージョンを切り替えたときにシンボリックリンク$NVM_DIR/current
を生成し現在アクティブになっているnodeのディレクトリへリンクを貼ってくれます。
公式からの引用
nvm use will not, by default, create a "current" symlink. Set $NVM_SYMLINK_CURRENT to "true" to enable this behavior, which is sometimes useful for IDEs. Note that using nvm in multiple shell tabs with this environment variable enabled can cause race conditions.
terminal上で動作確認
実際にNVM_SYMLINK_CURRENTを有効にするとどのように変化するかterminalで確認します。
$ nvm current
v6.2.2
# まだシンボリックリンクは存在しない
$ ls -l $NVM_DIR/current
ls: /Users/nooby/.nvm/current: No such file or directory
# オプションを有効にする
$ export NVM_SYMLINK_CURRENT=true
$ nvm use v5
Now using node v5.12.0 (npm v3.8.6)
$ which node
/Users/nooby/.nvm/versions/node/v5.12.0/bin/node
# node/v5.12.0ディレクトリへのリンクが生成される
$ ls -l $NVM_DIR/current
lrwxr-xr-x 1 nooby staff 40 10 15 23:31 /Users/nooby/.nvm/current -> /Users/nooby/.nvm/versions/node/v5.12.0
$ nvm use v6
Now using node v6.2.2 (npm v3.9.5)
# node/v6.2.2のリンクへ切り替わる
$ ls -l $NVM_DIR/current
lrwxr-xr-x 1 nooby staff 39 10 15 23:32 /Users/nooby/.nvm/current -> /Users/nooby/.nvm/versions/node/v6.2.2
このオプションを有効にすることでnvmで現在アクティブになっているnodeを$NVM_DIR/current/bin/node
でも呼び出せるようになります。公式にも書かれていますがIDE等でnodeのpathを指定する際に便利そうな感じです。
NVM_SYMLINK_CURRENTの常時有効化
このオプションを常に有効にするために.bashrcなどでnvmの初期化前にexport NVM_SYMLINK_CURRENT=true
を追加しておくといいですね。
# init nvm
export NVM_DIR="${HOME}/.nvm"
export NVM_SYMLINK_CURRENT=true # <= 追加
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
所感
Sublime等の追加パッケージでnode_pathを指定しなければいけないことがあり、今までwhich node
の結果を直接指定していて気持ち悪いなと思っていましたが、NVM_SYMLINK_CURRENT を有効にすることで/Users/nooby/.nvm/current/bin/node
を指定できるようになり、すっきりしました。