【nvm】nodeのバージョン管理をnodebrewからnvmに移行する&使い方

nodeのバージョン管理をnodebrewからnvmに変えました。

理由はプロジェクトごとにバージョン管理がしたかったから。

GoogleTrendsで見てみたら、この1年でnvmがnodebrewの3倍くらい人気でした。(他に検討したのはnodenv、ndenv)

今回はnodebrewからnvmに移行したログを記載します。

nodebrew(node.js)を削除

下記リンク先の記事が分かりやすかったです↓

Node.js を完全にアンインストールする(opens new window)

アンインストール系

$ 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をインストールしていく

公式(opens new window) の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 Version Manager)を使ってNode.jsをインストールする手順(opens new window)

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

こちらを下部にコピペして保存。

fishやzshを使っている場合はこちら(opens new window)

.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

してからもう一度。