【nvm】nodeのバージョン管理をnodebrewからnvmに移行する&使い方
nodeのバージョン管理をnodebrewからnvmに変えました。
理由はプロジェクトごとにバージョン管理がしたかったから。
GoogleTrendsで見てみたら、この1年でnvmがnodebrewの3倍くらい人気でした。(他に検討したのはnodenv、ndenv)
今回はnodebrewからnvmに移行したログを記載します。
nodebrew(node.js)を削除
下記リンク先の記事が分かりやすかったです↓
アンインストール系
$ brew uninstall nodebrew
$ curl -o uninstall-node.sh https://gist.githubusercontent.com/nicerobot/2697848/raw/uninstall-node.sh
$ chmod u+x uninstall-node.sh
$ ./uninstall-node.sh
enterで進める
$ rm uninstall-node.sh
削除系
$ sudo rm -rf /usr/local/include/node
$ sudo rm -rf /usr/local/lib/dtrace
$ rm -rf ~/.node-gyp
$ rm -rf ~/.npm
$ rm -rf ~/.sourcemint
$ which node
$ rm -rf <「which node」で出たパス>
別場所でもnodeがinstallされていた場合のためにもう一度
$ which node
なければOK、もしあれば同じ手順で削除。
もしもhomebrewに(も)nodeがあったら
$ brew list
でnodeがあった場合、
$ brew uninstall node
で削除できます。
もし削除が上手くいかなかった場合はbrew install node
でhomebrewでnodeを再インストールし、改めて削除コマンドを実行すれば消せるはずです。
homebrewをきれいにする
$ brew doctor
$ brew cleanup
確認
$ node -v
$ npm -v
なければOK。
nvmをインストールしていく
公式のREADMEを見たらhomebrewはサポート外だった。
一番上に記載されていたやり方(curl)にします。
念のため(やらなくてもOK)
OS X 10.9以降ではXcodeの手動インストールをしていない場合失敗するらしい。
何かあると面倒なので、一応入れ直ししてみる。
$ sudo rm -rf $(xcode-select -print-path)
$ sudo rm -rf /Library/Developer/CommandLineTools
$ xcode-select --install
やっていく
.bash_profileがない場合は
$ touch ~/.bash_profile
をしてから、
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
$ nvm -v
でバージョンが出ればOK。
homebrewでやるなら
$ brew install nvm
ちょっと時間がかかるかもしれません。
$ source $(brew --prefix nvm)/nvm.sh
$ echo 'source $(brew --prefix nvm)/nvm.sh' >> ~/.bash_profile
$ command -v nvm
nvm
と返ってくればOK。
参考にしたのはこちら。homebrew以外のインストール方法もあります。
手順の違いを比較して見ることができます↓
nvm使い方チートシート
node.jsをインストールする
最新版のnodeをインストールする
$ nvm install node
最初にインストールされたバージョンがデフォルトに設定されます。
推奨版をインストールしたい場合
$ nvm install --lts
デフォルトのnodeバージョンを変更する
推奨版にする場合は
$ nvm alias default lts/*
バージョン指定する場合は
$ nvm alias default v00.00.0
こんな感じ。
現在の設定を確認する
場合により、terminalを再起動する必要ありとのこと。
$ nvm ls
不要なバージョンを削除する
$ nvm uninstall v00.00.0
プロジェクトごとにバージョン管理
$ vi ~/.bashrc
.bashrcに追記をします。
cdnvm() {
cd "$@";
nvm_path=$(nvm_find_up .nvmrc | tr -d '\n')
# If there are no .nvmrc file, use the default nvm version
if [[ ! $nvm_path = *[^[:space:]]* ]]; then
declare default_version;
default_version=$(nvm version default);
# If there is no default version, set it to `node`
# This will use the latest version on your machine
if [[ $default_version == "N/A" ]]; then
nvm alias default node;
default_version=$(nvm version default);
fi
# If the current version is not the default version, set it to use the default version
if [[ $(nvm current) != "$default_version" ]]; then
nvm use default;
fi
elif [[ -s $nvm_path/.nvmrc && -r $nvm_path/.nvmrc ]]; then
declare nvm_version
nvm_version=$(<"$nvm_path"/.nvmrc)
declare locally_resolved_nvm_version
# `nvm ls` will check all locally-available versions
# If there are multiple matching versions, take the latest one
# Remove the `->` and `*` characters and spaces
# `locally_resolved_nvm_version` will be `N/A` if no local versions are found
locally_resolved_nvm_version=$(nvm ls --no-colors "$nvm_version" | tail -1 | tr -d '\->*' | tr -d '[:space:]')
# If it is not already installed, install it
# `nvm install` will implicitly use the newly-installed version
if [[ "$locally_resolved_nvm_version" == "N/A" ]]; then
nvm install "$nvm_version";
elif [[ $(nvm current) != "$locally_resolved_nvm_version" ]]; then
nvm use "$nvm_version";
fi
fi
}
alias cd='cdnvm'
cd $PWD
こちらを下部にコピペして保存。
.nvmrcを追加する
各プロジェクトのrootに.nvmrcを作成して
14.16.1
こんな感じで使いたいバージョンを記載すると、 自動的に(ない場合はインストールされ)そのバージョンに切り替わります。(.nvmrcがない場合はデフォルトバージョンが利用されます)
下記コマンドでもできます。(winでcmd
コマンドを使っている場合は×)
最新版を使いたい場合
$ echo " node " > .nvmrc
推奨版を使いたい場合
$ echo " lts / * " > .nvmrc
指定のバージョンを使いたい場合
$ echo " 5.9 " > .nvmrc
nvmが入ったのにnvm: not found
になる場合
$ source ~/.bash_profile
でterminal再起動。
ダメな場合は
$ touch ~/.bash_profile
してからもう一度。