tomatoaiu の Tech Blog

プログラミングやツールについてのまとめブログ

Node.jsのバージョン管理|fish上のanyenvでnodenvをinstallする + npm global でのinstallについて

モチベーション

とあるバージョンのNode.jsを使う必要が出てきました。今までは、nodebrewを利用していましたが、調べてみるとanyenvとnodenvを利用したものが最近的?みたい。なのでそれらをfishで利用できるように環境構築しました。

環境

  • fish: version 3.0.2
  • iTerm2: Build 3.3.2
  • git: version 2.20.1 (Apple Git-117)
  • vim: version 8.0.1365

環境構築

大体参考文献通りです。

▼fish

git clone https://github.com/riywo/anyenv ~/.anyenv # anyenvをinstall
vim ~/.config/fish/config.fish # fishにpathを設定

▼config.fish

set -x PATH $HOME/.anyenv/bin $PATH

▼fish

source ~/.config/fish/config.fish # shellを更新
anyenv # anyenvがinstallできたか確認
exec $SHELL -l # shellを再起動
anyenv install --init # anyenvの初期設定?
anyenv install nodenv # nodenvをinstall
exec $SHELL -l # shellを再起動
vim ~/.config/fish/config.fish # shellのnodenvのパスを設定

▼config.fish

set -x NODENV_ROOT $HOME/.anyenv/envs/nodenv
set -x PATH $HOME/.anyenv/envs/nodenv/bin $PATH
set -gx PATH $NODENV_ROOT/shims $PATH

▼fish

source ~/.config/fish/config.fish # shellを更新
exec $SHELL -l # shellを再起動

▼fish

nodenv -v # nodenvでnode.jsをinstallできたか確認
nodenv install 10.16.0 # Node.jsのv10.16.0をinstall
nodenv rehash # Node.jsのv10.16.0パスを~/.anyenv/envs/nodenv/shims/に配置?
nodenv global 10.16.0
node -v

▼node -v の実行結果

v10.16.0

rehashとは

$ nodenv help rehashを実行すると以下の文が出ました。

Rehash nodenv shims (run this after installing executables)

よく分からない。
こちらの方の rbenv rehashは何をやっているのか? · DQNEO起業日記 を見て把握できました。ありがとうございます。
~/.anyenv/envs/nodenv/versions/10.16.0/bin/~/.anyenv/envs/nodenv/shims/に配置だと思われる。

npmでのglobal installについて

yarnを入れてみます。すると何やらanyenv配下にinstallされるよう。ちなみにNode.jsのバージョンを12.4.0にしている状態です。

▼fish

$ npm i -g yarn

/Users/<username>/.anyenv/envs/nodenv/versions/12.4.0/bin/yarn -> /Users/<username>/.anyenv/envs/nodenv/versions/12.4.0/lib/node_modules/yarn/bin/yarn.js
/Users/<username>/.anyenv/envs/nodenv/versions/12.4.0/bin/yarnpkg -> /Users/<username>/.anyenv/envs/nodenv/versions/12.4.0/lib/node_modules/yarn/bin/yarn.js
+ yarn@1.17.3
added 1 package in 0.725s

この状態でコマンド打つとyarnが見つからないと表示されました。パスが通ってないようですね。

▼fish

$ yarn

fish: Unknown command yarn

なので、以下のようにながったらしいパスをとりあえず、config.fishに入れてみました。

▼config.fish

set -x PATH $PATH $HOME/.anyenv/envs/nodenv/versions/12.4.0/lib/node_modules/yarn/bin/

で、パスを追加したのでconfig.fishを更新しておきます。

▼fish

source ~/.config/fish/config.fish

実行してみると無事にパスが通って yarn を使うことができました!だけど、もっと良い方法がありそうな気がする。。。

▼fish

$ yarn

yarn install v1.17.3
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
[4/4] 🔨  Building fresh packages...
✨  Done in 69.68s.

npm install --globalについて

上記のもっと良い方法を見つけました。

tomatoaiu.hatenablog.com

参考文献