Windows でツールを使わず Node.js の複数バージョンを共存させる


Windows で複数バージョンの node を使うためのツールとしてnvmw とか nodist とかありますが、それらを使わずに複数バージョンを共存させる方法。

メリット

  • 意図しない node のバージョンが走ることを防げる

デメリット

  • デフォルトで node にパスが通っていない状態になるので起動が面倒になる

やりかた

まず、普通にインストーラを落としてきて起動します。インストール先を聞かれる段階になったら、下の画像のようにインストール先にバージョン番号を含めます。パスが短いほうが嬉しい人は、C:\node\v0.10.22 とかにしても構いません。

次に、インストールするコンポーネントを聞かれるので、Add to PATH だけ外します。これによって、意図せずに何らかのバージョンの node にパスが通った状態を防げます。

このままインストールを進めると、バージョン別の場所に node をインストールできます。node を起動する時はフルパスで指定して下さい。

grunt-cli とか yo とかを npm install -g でコマンドをインストールすると、%APPDATA%\npm にインストールされます。なので、grunt とかについても必要に応じてフルパスで実行するなりパスを通すなりする必要があります。

余談:どうしてそんなことするの?

自分のワークフローとして、Windows でコマンドプロンプト開く時にまず cmd-[プロジェクト名].bat を叩くところから始めるようにしてます。そのバッチファイルの中で、PATH に "C:\Program Files\nodejs-v0.10.22" やら C:\Ruby200\bin やらを足してバージョンを指定してます。このワークフローだとツールを使う必要がないので、こういったやりかたをしてます。

単純にコマンドプロンプトを起動しただけでは node にパスが通っていないので、それが不便だと思う場合はこの方法はオススメしません。

grunt-express-server が叩く node が、nodist で指定したものと違ったものになる(ことがある?)といった事案を聞いて、そういったツールを使わない方法も書いといたほうがいいかと思ったので書いた次第です。