Ikkyu's Tech Blog

技術系に関するブログです。

nvmからnodenvに変えました

デフォルトshellをfish shellに変えてから気が付いたんですが、今まで使っていたnvmはfish shellをサポートしてないということがわかりました。公式では一応代替手段はあるのですが...

その話を友人にしたらanyenvでndenv使うのオススメと言われて試しに入れてみたら、気に入ったのでそのやり方を紹介します。

公式ドキュメント以外に以下の記事を参考にさせてもらいました。

www.to-r.net

この記事で想定している人

  • anyenvでndenvを使用してみようと思っている人
  • fish shellを使用している人

前提

  • Homebrewがinstallされている
  • fish shellをデフォルトshellで使用している

anyenvとは

公式には

anyenv - All in one for **env

This is a simple wrapper for rbenv style environment managers. You don’t have to git clone or modify your shell profile for each **env anymore if you install anyenv.

とあります。

要は、anyenv使って色んな**envをinstallする時に、必要な設定(git cloneやshellの設定にパスを通すなどの変更)をする必要がなくなるよっていう便利なツールです!

**envは、anyenv install --listで確認できます。

nvmを削除

anyenvをinstallする前に、nvmを削除します。(ありがとう!nvm!!)

nvmの設定を削除

.bash_profile または .bashrcなどのshell設定ファイルに、nvmのパスなどの設定が記述されていると思うので削除します。

~/.nvmを削除

$ rm -rf ~/.nvm

anyenvをinstall

Homebrewを使ってinstallします。手順は公式通りinstallしていきます。

$ brew install anyenv

installできたら初期化します。

$ anyenv init
# Load anyenv automatically by adding
# the following to ~/.config/fish/config.fish:

status --is-interactive; and source (anyenv init -|psub)

~/.config/fish/config.fishに追記します。

echo 'status --is-interactive; and source (anyenv init -|psub)' >> ~/.config/fish/config.fish

リロードします。

$ exec $SHELL -l

リロードすると以下の警告が表示されます。

Last login: Sun Oct 20 16:16:30 on ttys003
ANYENV_DEFINITION_ROOT(/Users/ユーザ名/.config/anyenv/anyenv-install) doesn't exist. You can initialize it by:
> anyenv install --init
Welcome to fish, the friendly interactive shell

警告に載っているコマンドを実行します。

$ anyenv install --init
Manifest directory doesn't exist: /Users/[ユーザ名]/.config/anyenv/anyenv-install
Do you want to checkout ? [y/N]: y
Cloning https://github.com/anyenv/anyenv-install.git master to /Users/[ユーザ名]/.config/anyenv/anyenv-install...
Cloning into '/Users/[ユーザ名]/.config/anyenv/anyenv-install'...
remote: Enumerating objects: 48, done.
remote: Total 48 (delta 0), reused 0 (delta 0), pack-reused 48
Unpacking objects: 100% (48/48), done.

Completed!

OK!🎉

nodenvをinstall

$ anyenv install nodenv
...
Install nodenv succeeded!
Please reload your profile (exec $SHELL -l) or open a new session.

リロードします。

$ exec $SHELL -l

nodenvのinstallが終わったので、次にNode.jsをinstallします。

Node.jsをinstall

全てのバージョンを確認してみます。

$ nodenv install -l

2019/10/20日現在、最新版の12.12.0をinstallします。

$ nodenv install 12.12.0 

globalで使用するnodeを設定します。

$ nodenv global 12.12.0

反映させるためリロードします。

$ exec $SHELL -l
$ node -v
v12.12.0

できました!!✌️

おまけ

プロジェクトでNodeのversionを固定したい場合

$ nodenv local <固定したいversion>
$ exec $SHELL -l

とコマンドを実行すると.node-versionが作成されて切替ができます!(作成後はリロードしないと反映されないので注意が必要です)

以上です。