nvm(Node Version Manager)経由でNode.jsのバージョン切り替え・alias設定の備忘録

nvm(Node Version Manager)経由でNode.jsのバージョン切り替え・alias設定の備忘録

Udemyなどで講座によってnodeのバージョンが違ったりしてときおり不安になることがあるのと、nvm自体たまにしか使わないので備忘録を残しておきます。

環境は以下です。

OS macOS Catalina v10.15.7
バージョン管理 nvm
パッケージ管理 npm
shell zsh

nvm 公式ページ:github.com/nvm-sh/nvm

nvmのインストール

こちらのドキュメントに従ってインストールをおこないます。

Installing and Updating

cURL コマンド

$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash

Wget コマンド

$ wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash

実行すると、以下のように.zshrcに追記したとのことでターミナルを開き直すように言われます。 僕の場合は元々入っていたので.zshrc にすでに含まれているとのことでした。

$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash  return
		
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 15037  100 15037    0     0   143k      0 --:--:-- --:--:-- --:--:--  151k
=> Downloading nvm from git to '/Users/xxxxxx/.nvm'
=> Cloning into '/Users/xxxxxx/.nvm'...
remote: Enumerating objects: 354, done.
remote: Counting objects: 100% (354/354), done.
remote: Compressing objects: 100% (302/302), done.
remote: Total 354 (delta 40), reused 156 (delta 27), pack-reused 0
Receiving objects: 100% (354/354), 206.98 KiB | 1.30 MiB/s, done.
Resolving deltas: 100% (40/40), done.
* (HEAD detached at FETCH_HEAD)
  master
=> Compressing and cleaning up git repository

=> Appending nvm source string to /Users/xxxxxx/.zshrc
=> Appending bash_completion source string to /Users/xxxxxx/.zshrc
=> Close and reopen your terminal to start using nvm or run the following to use it now:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion    

これで、ターミナルを再起動すればすぐに使用することができます。

.zshrcの確認

.zshrcを確認すると以下のように既存の設定の後に nvm の設定が追加されています。

PROMPT='%1~ %# '  
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

上記の設定はnvmドキュメントの Manual Install 

「Now add these lines to your ~/.bashrc~/.profile, or ~/.zshrc file to have it automatically sourced upon login: (you may have to add to more than one of the above files)」

Manual Install 

の下にも記載されています。

nvmの確認

$ nvm --version
0.39.1

Node.jsのインストール

バージョンを指定してインストール

$ nvm install 8.0.0  //バージョン 8.0.0 をインストール
$ nvm install v8.0.0  //バージョン 8.0.0 をインストール(上記と同じ)
$ nvm install 14.17  //バージョン 14.17.* の最新版をインストール
$ nvm install 16   //バージョン 16.*.* の最新版をインストール

nvm install node で最新のバージョンをインストール

$ nvm install node // 最新のバージョンをインストール

nvm install --ltsで最新の LTS バージョンをインストール

$ nvm install --lts // 最新の LTS バージョンをインストール

nvm ls-remoteリモートに登録されているNode.jsのバージョンの一覧を出力することもできます。

$ nvm ls-remote
        v0.1.14
        v0.1.15
        v0.1.16
        v0.1.17
        v0.1.18
        v0.1.19
        v0.1.20
        v0.1.21
        v0.1.22
        v0.1.23
        v0.1.24
        v0.1.25
        v0.1.26
        v0.1.27
        v0.1.28
〜 省略

以下のコマンドでnodeとnpmのバージョンを確認してみましょう。

$ node -v
v16.18.0
$ npm -v
8.19.2

nvmのaliasの設定

nvmではaliasが設定されておりnvm aliasで確認することが出来ます。

$ nvm alias

実行すると以下のように設定されているバージョンを確認することが出来ます。

$ nvm alias

default -> v16.18.0
iojs -> N/A (default)
unstable -> N/A (default)
node -> stable (-> v16.18.0) (default)
stable -> 16.18 (-> v16.18.0) (default) 
lts/ * -> lts/hydrogen (-> N/A)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.24.1 (-> N/A)
lts/erbium -> v12.22.12 (-> N/A)
lts/fermium -> v14.21.1
lts/gallium -> v16.18.1 (-> N/A)
lts/hydrogen -> v18.12.1 (-> N/A)
  • default -> デフォルトの Node.js のバージョン。最初にインストールしたバージョンがデフォルトの Node.js として使用される
  • iojs -> 最新バージョンの io.js
  • node -> 最新バージョンの Node.js
  • stable -> 非推奨バージョンを使用していた場合 使用しているv (-> 最新v)が表示される
  • lts/xxxx -> コードネームが xxxx の最新の LTS バージョン

alias の default を変更・設定

一番最初にインストールしたバージョンが alias の default になります。default を変更(または再設定)するには nvm alias default にバージョンを指定します。

$ nvm alias default 14.18.3   //alias の default をv14.18.3に変更する

aliasの設定の確認

 
$ nvm alias  return  //alias の設定を確認

default -> 14.18.3 (-> v14.18.3)    //default が変更された
iojs -> N/A (default)
unstable -> N/A (default)
node -> stable (-> v16.18.0) (default)
stable -> 16.18 (-> v16.18.0) (default)
lts/ * -> lts/hydrogen (-> N/A)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.24.1 (-> N/A)
lts/erbium -> v12.22.12 (-> N/A)
lts/fermium -> v14.21.1
lts/gallium -> v16.18.1 (-> N/A)
lts/hydrogen -> v18.12.1 (-> N/A)

Node.jsのバージョン切り替え

インストール済のバージョンを確認

nvm lsでインストール済のnode.jsのバージョンを全て確認できます。

$ nvm ls

実行すると以下のように表示されます。

$ nvm ls
       v14.21.1 // インストール済み
->     v16.18.0 // インストール済み
         system

// aliasの設定
default -> v16.18.0
iojs -> N/A (default)
unstable -> N/A (default)
node -> stable (-> v16.18.0) (default)
stable -> 16.18 (-> v16.18.0) (default)
lts/ * -> lts/hydrogen (-> N/A)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.24.1 (-> N/A)
lts/erbium -> v12.22.12 (-> N/A)
lts/fermium -> v14.21.1
lts/gallium -> v16.18.1 (-> N/A)
lts/hydrogen -> v18.12.1 (-> N/A)

現在利用しているバージョンを確認

現在利用している(アクティブ化されている) Node.js のバージョンを表示するにはnvm currentを実行します。

$ nvm current 
v16.18.0

バージョンの切り替え

インストール済みのバージョンの中から任意のバージョンに切り替えるにはnvm useを実行します。

$ nvm use 14.21.1 // v14.21.1に切り替え
Now using node v14.21.1 (npm v6.14.17)

最新の npm へアップグレード

現在利用している Node.js のバージョンでサポートされている最新の npm バージョンを取得(アップグレード)するには、nvm install-latest-npmを実行します。

$ nvm install-latest-npm

おまけ:Bash Completionの補完

Bash Completionがあり便利です。

使用例が以下です

$ nvm use tab //タブキーを押すと以下の候補が表示される
default       lts/boron     lts/fermium   stable        v16.18.0    
iojs          lts/carbon    lts/gallium   system                    
lts/ *         lts/dubnium   lts/hydrogen  unstable                  
lts/argon     lts/erbium    node          v14.21.1     

以下がデモです。コマンド + タブキーを押すと候補や補完が出てきます。

$ nvm use v16 tab //タブキーを押すと 16.18.0 が補完される

その他にも指定のバージョンに一時的に切り替えて実行するnvm runがあったり、

Usage

.nvmrcというファイルで、プロジェクトのNode.jsのバージョンを指定できたりもするようです。

.nvmrc