Web制作・開発会社 プレスマンのスタッフブログ

PRESSMAN*Tech

npmとnpm@3をちょっとだけ比べてみる

nodejsのパッケージマネージャーであるnpmの最新版(まだ安定版でない)であるnpm@3を使ってみました。

地味に嬉しいのが

でこけたときにnpm本体が消えなくなったそうです。昔、npm本体が消え去ったときは何が起こったかわかりませんでした。

わかりやすい変更点としては,npmでインストールされるモジュールはそれが依存しているモジュールをそのディレクトリ配下に持ちます。
依存されているモジュールはさらに、そのディレクトリ配下に依存しているモジュールを持ちます。
なので、階層が深くなってしまう上に、同じモジュールを持っていることもあります。
これがnpm@3だと上手い具合に依存関係を整理してくれてnode_modeules配下へ並列に全部配置してくれます。階層が浅くなる上に、ダブっているモジュールもなくなります。バージョンが問題になるときなどは配下に持つようにしたりして上手く管理しているとのことです。

で、実際に使ってみました。下記が自分がとあるところで使っているpackage.jsonです。

[javascript]
{
"name": "test",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node ./bin/www"
},
"dependencies": {
"aws-sdk": "^2.1.39",
"body-parser": "~1.13.2",
"compression": "^1.5.1",
"config": "^1.15.0",
"cookie-parser": "~1.3.5",
"debug": "~2.2.0",
"express": "~4.13.1",
"hbs": "~3.1.0",
"log4js": "^0.6.25",
"morgan": "~1.6.1",
"multiparty": "^4.1.2",
"request": "^2.60.0",
"serve-favicon": "~2.3.0"
}
}
[/javascript]

これをnpm@3でインストールしてみると。

npm2の方でインストールすると

となり全然違います!
node_modulesのサイズはnpm@3の方が

npm2が

どれくらい重複しているかどうかに依存しますが、そこそこサイズが小さくなっています。当然ファイル数も少なくなっているはずですし、なかなかいい感じですね。