はじめに
Node.jsのバージョンマネージャーというものを使ってみる話です。
Windowsで、しかもCygwinです。
そうなると対象がぐっと限られまして、結局nvmを入れることとなりました。
Macならnodenvも使えるのでしょうが、こちらはWindows環境で使うのは厳しいようでした。
公式サイト
いざインストール
GitHubにあるとおりですが…curl
やwget
で入れられるので、お好きな方で。
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を直接入れてしまえばいいんですが…
長くいろんなアプリケーションで使うことを想定されているなら、分けておいて間違いはないかと。
以上でした!