hakobera's blog

技術メモ。たまに雑談

Node Version Manager for Windows を作ってみた

これは JavaScript Advent Calendar 2011 (Node.js/WebSocketsコース) の1日目の記事です。

nvmw (Node Version Manager for Windows) とは

Mac OSLinux など Unix 系の OS で利用できる nvm (Node Version Manager) の Windows 版とするべく私 @hakobera が開発している Node.js + npm のインストール用ツールです。Node.js v0.6 以降のインストールをすることができます。

ソースコードは github で公開しています。
hakobera/nvmw · GitHub

使い方

事前準備

git, python のインストールし、コマンドプロンプトから実行できるように環境変数 PATH を設定しておきます。

nvmw のインストール

ネットワークに繋がった状態で、コマンドプロンプトから以下のコマンドを入力するだけです。

> git clone git://github.com/hakobera/nvmw.git "%HOMEDRIVE%%HOMEPATH%\.nvmw"
> set "PATH=%PATH%;%HOMEDRIVE%%HOMEPATH%\.nvmw"

毎回、set PATH するのが面倒な場合は、%HOMEDRIVE%%HOMEPATH%\.nvmw" を環境変数に追加しておきます。

Node.js + npm のインストール

Node.js と npm をインストールするには以下の install コマンド利用します。

> nvmw install v0.6.3

Node.js は指定したバージョン(上記だと、v0.6.3)を公式サイトからダウンロードし、npm は github から最新版がインストールされます。

複数のバージョンを切り替えるには use コマンドを、インストールされているバージョンと現在選択中のバージョンを確認するには ls コマンドを使います。

> nvmw use v0.6.2
Now using Node v0.6.2
> nvmw ls
v0.6.2
v0.6.3
Current: v0.6.2

個別のバージョンを削除したい場合は uninstall コマンドを使います。

> nvmw uninstall v0.6.2

nvmw と nvmw を使ってインストールした Node.js 全てをアンインストールしたい場合は、.nvmw フォルダごと削除するだけで OK です。レジストリも使わないので環境汚染しない安心設計です。

公式インストーラを使わないのはなぜか?

Node.js は v0.6.3 から npm を含んだ公式の msi インストーラが配布されています。ただし、この公式インストーラには以下の(自分の環境にとって)致命的な制限があります。

  • インストール先が選べない
    • C:\Program Files\nodejs (64bit の場合は、C:\Program Files(x86)\nodejs) にインストールされます
    • つまり、複数のバージョンが共存できません(インストール後に移動すれば話は別ですが、だったら最初から選択できるようにして欲しい)

上記がなぜ致命的かというと、会社のマシンに C:\Program Files にソフトウェアをインストールする権限がなかったからです。これだと「インストールしてから移動」して複数バージョンの共存、ということもできません。
バージョンアップが速い Node.js で複数バージョンを共存できないのは、色々と致命的なので、私は公式インストーラではなく、nvmw を利用しています。

npm の最新バージョンはいずこに?

Node.js v0.6.3 から npm が本体のリポジトリ (deps/npm) に取り込まれました。ただし、この場所のソースは Node.js のパッケージ時に一括更新されるようで、実際の開発は元のリポジトリ
の tar-js ブランチで開発されています。(最新バージョンは現時点で 1.1.0-alpha-3 で Node.js v0.6.3 同梱のものは 1.1.0-alpha-2ですので、1つバージョンが上がっています。)

alpha が取れると同時に master に merge されるとは思いますが、それまでは master は 1.0.106 のままなので気をつけてください。もちろん nvmw は tar-js ブランチをみるようになっています。

もし自分で npm 最新版をビルドしたいという方は以下の方法で、npm をカスタムビルドすることができます。これは Mac OSLinux 環境でも同じなので、興味がある方は試してみてください。

> git clone git://github.com/isaacs/npm.git
> cd npm
> git fetch
> git checkout -b tar-js origin/tar-js
> git submodule update --init --recursive
> node cli.js install -g

最近の npm の修正は Windows の不具合修正を多く含んでいるので、Windows ユーザはできるだけ、最新版を使うようにした方が良いかと思われます。(ちなみに 1.0.106 では Express がインストールできません orz)

まとめ

東京Node学園やNode塾などを見ていても、Node.js 開発者は圧倒的に Mac ユーザが多いですが、仕事では Windows しか使えないという方も多いはずです。

Windows に初めて対応バージョンにしては、Node.js 本体はとても良くできていて、十分実用に耐えうるものだと思っています。npm も当初は問題が多発していましたが、着実に良くなってきて、Express や Socket.IO などの有名なモジュールは大抵インストールできるようになっています。

Windows ユーザの皆様、nvmw で手軽に Node.js を初めてみませんか?