SourceChord

C#とXAML好きなプログラマの備忘録。最近はWPF系の話題が中心です。

Node.js 5.0をインストールしてみました

つい先日4.0が出たばかりと思っていたら、もう5.0が出ました。
ただし5.0はLTS版ではないので、Node.jsの公式ページは以下のように、LTSの4系と5.0の両方がトップページに表示されるようになってます。

f:id:minami_SC:20151101221847p:plain:w300
Node.js

ちなみに、Node.js 5.0.0での変更点はこんな感じ。
https://github.com/nodejs/node/blob/v5.0.0/CHANGELOG.md

個人的に特に大きな変更点はコレ!!

  • npm 3系へのアップデート

node.jsにバンドルされているnpmのバージョンが上がりました。

npm3系については、以前こんなニュースがありましたが、それがNode.jsの標準として搭載されました。
http://www.infoq.com/jp/news/2015/07/npm
http://www.infoq.com/news/2015/06/npm

npmのv3系では、モジュールの依存関係の管理方法が変わりました。
今までみたいに、フォルダ階層があっという間に深くなってしまうのを避けるような構造になっています。

今までのnpmは、あるモジュールをインストールした際に、そのモジュールが依存する別のモジュールをxxxx/node_modules/yyyy/node_modules・・・と入れ子構造で管理していましたが、v3.0からは依存するモジュールもフラットに展開して管理するようになってます。
これによって、依存モジュールのツリー構造による、とてつもなく深い階層ができにくくなっています。
また、今までは各ライブラリが依存するモジュールはそのライブラリのフォルダ以下の階層に別々に持っていたので、あちこちで大量に重複するファイルが出てました。
これもフラットに持つことで重複は少なくなるっぽいです。

厳密にバージョン指定されてて、別々のバージョンを持たなきゃいけない場合にどうなるのか、とか、まだ動作を把握できてない部分もありますが、Windows環境のNode.jsユーザーとしては、これは非常にうれしい変更点です。

Node Tools for Visual Studioを使ってVS上でNode.js開発をしてると、MAX_PATH超えるとビルドに失敗するようになって、デバッガも動かせなくなったり、、、
と、かなり踏んだり蹴ったりな状態になってしまってたので、これはとても助かります。

npm2系とnpm3系でのインストール動作の違い

てことで、Node.js4.0をインストールしてた環境と、Node.js5.0をインストールした環境のそれぞれで、以下のコマンドでexpressをインストールして違いを見てみます。 npm install express --save

Node.js4.0(npm2系)での動作

node_modulesフォルダは、以下の画像のようにexpressフォルダが一個できてるだけです。
f:id:minami_SC:20151101221913p:plain

Node.js5.0(npm3系)での動作

npm3系の環境では、以下のようにnode_modulesフォルダにはexpressで使っているモジュールがフラットに展開されて保管されます。
f:id:minami_SC:20151101221922p:plain

こんな風に大量にフォルダができますが、npm uninstall express --saveとかやってアンインストールすると、これらのexpressが依存してたモジュールを含めすべて削除されます。
イイ感じですね♪