Tech & Tips

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

投稿日:

この記事は2年以上前ですので、内容が古い可能性があります

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

地味に嬉しいのが


npm install -g npm

でこけたときに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でインストールしてみると。


npm install
ls node_modules/
accepts                  fd-slicer                on-finished
amdefine                 finalhandler             on-headers
ansi-regex               forEachAsync             optimist
ansi-styles              forever-agent            parseurl
array-flatten            form-data                path-to-regexp
asn1                     forwarded                pend
assert-plus              fresh                    process-nextick-args
async                    generate-function        proxy-addr
aws-sdk                  generate-object-property qs
aws-sign2                graceful-readlink        range-parser
basic-auth               handlebars               raw-body
bl                       har-validator            readable-stream
bluebird                 has-ansi                 request
body-parser              hawk                     sax
boom                     hbs                      semver
bytes                    hoek                     send
caseless                 http-errors              sequence
chalk                    http-signature           serve-favicon
combined-stream          iconv-lite               serve-static
commander                inherits                 sntp
compressible             ipaddr.js                source-map
compression              is-my-json-valid         statuses
config                   is-property              string_decoder
content-disposition      isarray                  stringstream
content-type             isstream                 strip-ansi
cookie                   json-stringify-safe      supports-color
cookie-parser            jsonpointer              tough-cookie
cookie-signature         log4js                   tunnel-agent
core-util-is             media-typer              type-is
cryptiles                merge-descriptors        uglify-js
ctype                    methods                  underscore
debug                    mime                     unpipe
delayed-stream           mime-db                  util-deprecate
depd                     mime-types               utils-merge
destroy                  minimist                 vary
ee-first                 morgan                   walk
escape-html              ms                       wordwrap
escape-string-regexp     multiparty               xml2js
etag                     negotiator               xmlbuilder
express                  node-uuid                xtend
extend                   oauth-sign

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


npm install
ls node_modules/
aws-sdk       compression   debug         hbs
morgan        request       body-parser   cookie-parser
express       log4js        multiparty    serve-favicon

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


du -s node_modules/
32728   node_modules/

npm2が


du -s node_modules/
36576   node_modules/

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

この記事をシェアする:
◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

私たちと一緒に働きませんか?

「npmとnpm@3をちょっとだけ比べてみる」はいかがでしたか?
株式会社プレスマンでは、 WordPressが大好きな方、仕事を通してさらにスキルを磨きたい方を募集しています。 まずは募集職種をご覧の上、お気軽にお問い合わせください。 あなたとお会いできるのを楽しみにしています。

採用情報を見る

-Tech & Tips
-,

© 2024 PRESSMAN*Tech Powered by STINGER