Node.jsのバージョンを指定する .nvmrc
があるリポジトリを触ることになったので nvm
を導入してみました ☀️
anyenv
でインストールした ndenv
をアンインストールする
nvm
と ndenv
は共存できなさそうなので、 ndenv
を使っている場合は ndenv
の方をアンインストールします。
anyenv uninstall ndenv
nvm
のインストール
nvm
のインストールは次のコマンドを実行しますが、
nvm
が更新されている場合があるので https://github.com/nvm-sh/nvm#install--update-script を参照してインストールのコマンドを確認しましょう。😳
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
実行したあとは .zshrc
に次の行を追加します。
source ~/.nvm/nvm.sh
そして、新しく端末を開くか (exec $SHELL -l)
を実行して .zshrc
を読み込みます。
Node.jsのインストール
まず、インストールできるNode.jsの一覧を表示します。
nvm ls-remote
バージョンを指定してNode.jsをインストールします。
nvm install v10.16.3
インストールしたNode.jsを使うには nvm use <バージョン>
を実行します。
nvm use v10.16.3
.nvmrc
に応じてNode.jsを自動選択するレシピを導入する( .zshrc
を分割する)
移動したディレクトリ(プロジェクト)に .nvmrc
があると自動でNode.jsを選択するレシピが公開されています。
インストールの方法ですが、
Put this into your $HOME/.zshrc to call nvm use automatically whenever you enter a directory that contains an .nvmrc file with a string telling nvm which node to use:
とあり、 .zshrc
に記述することになっています … .zshrc
が長くなると困りますよね?🤔
そこで .zshrc
を分割しましょう😃
まず次のようなディレクトリ構成にします。
~/
└── .zshrc
└── ~/.zsh.d
└── nvm-autoload.zsh
次に、 ~/.zsh.d/nvm-autoload.zsh
を作成して、次の順番の内容にします。
1. source ~/.nvm/nvm.sh
2. https://github.com/nvm-sh/nvm#zsh のレシピ(`# place this after nvm initialization!` と書いてあります)
最後に、 ~/.zshrc
を編集します。
nvm
インストール時に追加した source ~/.nvm/nvm.sh
を削除してから 次の内容を挿入します。(http://fnwiya.hatenablog.com/entry/2015/11/03/191902 と内容は同一です)
ZSHHOME="${HOME}/.zsh.d"
if [ -d $ZSHHOME -a -r $ZSHHOME -a \
-x $ZSHHOME ]; then
for i in $ZSHHOME/*; do
[[ ${i##*/} = *.zsh ]] &&
[ \( -f $i -o -h $i \) -a -r $i ] && . $i
done
fi
.nvmrc
がない場所でデフォルトの Node.js を決める
これで .nvmrc
の内容に応じて自動でNode.jsのバージョンが選択されますが、 .nvmrc
がない場所ではどうなるのでしょうか。
新しく端末を開くなどで .nvmrc
がない場所に移動すると次のメッセージが表示されます
ディレクトリを移動して .nvmrc
が見つからない度にこのメッセージが出る😖ので これを修正しましょう。
Reverting to nvm default version
N/A: version "default -> N/A" is not yet installed.
You need to run "nvm install default" to install it before using it.
メッセージや、先程配置したレシピの内容を見るとわかりますが nvm use default
が実行されています☺️
default
は nvm
のエイリアスになっているため default
が何なのかを nvm alias
で設定します。
$ nvm alias default v10.16.3
default -> v10.16.3
間違えて設定してしまった場合は nvm unalias
で削除できます😁
$ nvm unalias default
Deleted alias default - restore it with `nvm alias "default" "v10.16.3"`
設定されているaliasなどは nvm ls
で確認できます。
$ nvm ls
v10.16.3
node -> stable (-> v10.16.3) (default)
stable -> 10.16 (-> v10.16.3) (default)
iojs -> N/A (default)
unstable -> N/A (default)
lts/* -> lts/dubnium (-> v10.16.3)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.16.1 (-> N/A)
lts/dubnium -> v10.16.3
.nvmrc
があるNode.jsプロジェクトに移動してみる
.nvmrc
があるディレクトリに移動してみましょう。
nvm
でインストールしていないバージョンでも 自動でインストールして使ってくれます。便利!🤩
$ node -v
v10.16.3
$ cd awesome-project
Found '/Users/ysd/awesome-project/.nvmrc' with version <8.9.0>
Downloading and installing node v8.9.0...
Downloading https://nodejs.org/dist/v8.9.0/node-v8.9.0-darwin-x64.tar.xz...
######################################################################## 100.0%
Computing checksum with shasum -a 256
Checksums matched!
Now using node v8.9.0 (npm v5.5.1)
$ node -v
v8.9.0
参考
ずっとUbuntu+zshでnvmを使いたかったんだよ!! - Qiita
https://qiita.com/Takumi_Kaibara/items/7c5e3ca735bc0167e83d
zsh設定ファイル(.zshrc)を分割する - fnwiya's quine
http://fnwiya.hatenablog.com/entry/2015/11/03/191902
nvmのデフォルトのバージョンの変え方 - Qiita
https://qiita.com/yuzooho/items/a5072ade3a0787640ef9