HRR Co., Ltd.

技術的な記録を残していくことを目的としています。1次情報を大事にしています。

Cygwinでnvm (Node Version Manager) を使ってみる

はじめに

Node.jsのバージョンマネージャーというものを使ってみる話です。
Windowsで、しかもCygwinです。
そうなると対象がぐっと限られまして、結局nvmを入れることとなりました。

Macならnodenvも使えるのでしょうが、こちらはWindows環境で使うのは厳しいようでした。

公式サイト

github.com

いざインストール

GitHubにあるとおりですが…curlwgetで入れられるので、お好きな方で。

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

成功すると、こんな感じのメッセージがターミナルエミュレーターに表示されていると思います。

=> nvm source string already in /home/${USER}/.bashrc
=> bash_completion source string already in /home/${USER}/.bashrc
=> 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

「nvmを使うには、ターミナルを閉じて再度開くか、下記コマンドを実行してくれ(意訳)」とのことなので、私は閉じて開いてみました。

$ nvm --version
0.39.1

無事にインストールされたようです。
歴史の長いツールだと勝手ながら思っておりましたが、メジャーバージョンは0なのですね。
(この辺はツール毎のポリシーがありそうですが)

nvmの使い方 (1)

こちらもGitHubにあるとおりですが…

1. 使えるNode.jsのバージョンを見る

実行完了まで時間がかかるので要注意…!全部出してくれるので。
直近10個だけとか、オプションないのかな。
nvm ls-remote --ltsはある)

$ nvm ls-remote
        v0.1.14
        v0.1.15
        v0.1.16
...
        v18.2.0
        v18.3.0
        v18.4.0

2. Node.jsのインストール

最新版がいいなら、これでよいです。

$ nvm install node

バージョン指定はこちら。

$ nvm install 14.4.0

3. インストール済みのNode.jsを見たいとき

下記コマンドを叩くだけです。

$ nvm ls
        v14.4.0
        v18.4.0
         system
default -> v14.4.0
iojs -> N/A (default)
unstable -> N/A (default)
node -> stable (-> v18.4.0) (default)
stable -> 18.4 (-> v18.4.0) (default)
lts/* -> lts/gallium (-> 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.19.3 (-> N/A)
lts/gallium -> v16.15.1 (-> N/A)

トラブルシューティング

エラーでインストールできなかったケース

私の場合はエラーが出て、インストールができなかったんですよね…。

$ nvm install v14.4.0
Downloading and installing node v14.4.0...
Downloading https://nodejs.org/dist/v14.4.0/node-v14.4.0-win-x64.zip...
Warning: Failed to create the file
Warning: /home/${USER}/.nvm/.cache/bin/node-v14.4.0-win-x64/node-v14.4.0-win-x
Warning: 64.zip: No such file or directory
                                                                                                                                  0.0%c
url: (23) Failure writing output to destination

Binary download from https://nodejs.org/dist/v14.4.0/node-v14.4.0-win-x64.zip failed, trying source.
grep: /home/${USER}/.nvm/.cache/bin/node-v14.4.0-win-x64/node-v14.4.0-win-x64.zip: No such file or directory
Provided file to checksum does not exist.
Binary download failed, trying source.
Installing from source on non-WSL Windows is not supported

https://nodejs.org/dist/v14.4.0/node-v14.4.0-win-x64.zip
ここから直接ダウンロードが可能だったので、クリックしてダウンロードし、
C:\Cygwin64\home\${USER}\.nvm\.cache\bin\node-v14.4.0-win-x64\
に直接配置しました…笑

$ nvm install v14.4.0
Downloading and installing node v14.4.0...
Local cache found: ${NVM_DIR}/.cache/bin/node-v14.4.0-win-x64/node-v14.4.0-win-x64.zip
Checksums match! Using existing downloaded archive ${NVM_DIR}/.cache/bin/node-v14.4.0-win-x64/node-v14.4.0-win-x64.zip
Now using node v14.4.0 (npm v6.14.5)

そうすると、cacheがあるので(自分で置いたんですが)処理がうまく通ります。

nvmの使い方 (2)

バージョン管理ができたということで、実際にインストール作業を行った場合に、どうなるのか見てみます。

yarnをインストールしてみる

扱うバージョンを指定して…

$ nvm use v14.4.0
Now using node v14.4.0 (npm v6.14.5)

インストールコマンドを叩きます。

$ npm install -g yarn

> yarn@1.22.19 preinstall C:\Cygwin64\home\${USER}\.nvm\versions\node\v14.4.0\bin\node_modules\yarn
> :; (node ./preinstall.js > /dev/null 2>&1 || true)

C:\Cygwin64\home\${USER}\.nvm\versions\node\v14.4.0\bin\yarnpkg -> C:\Cygwin64\home\${USER}\.nvm\versions\node\v14.4.0\bin\node_modul
es\yarn\bin\yarn.js
C:\Cygwin64\home\${USER}\.nvm\versions\node\v14.4.0\bin\yarn -> C:\Cygwin64\home\${USER}\.nvm\versions\node\v14.4.0\bin\node_modules\
yarn\bin\yarn.js
+ yarn@1.22.19
added 1 package in 0.875s

この実態がどこにあるか調べてみると…。

$ which yarn
/home/${USER}/.nvm/versions/node/v14.4.0/bin/yarn

きちんとバージョン管理されたディレクトリ配下にあることがわかります。
他のバージョンでやってみると…。

$ nvm use v18.4.0
Now using node v18.4.0 (npm v8.12.1)
$ npm install -g yarn
$ which yarn
/home/${USER}/.nvm/versions/node/v18.4.0/bin/yarn

こんな感じで、分けられていることがわかります。

おわりに

ちょっと試すだけなら、Node.jsを直接入れてしまえばいいんですが…
長くいろんなアプリケーションで使うことを想定されているなら、分けておいて間違いはないかと。

以上でした!