kakts-log

programming について調べたことを整理していきます

npm v4 v5について

npm v4 v5 について

先日のnode学園でnpm の開発者Forrest Norvellが登壇してnpmのv4 v5について語っていました。 nodejs.connpass.com

発表のスクリプトは以下にまとまっています。 Forrest Norvell曰く、v4はそんなに大きな変更点はなく、v5でdepricatedだった機能が完全廃止されたりと大きな変更があるようです。 奇数系バージョンが大きな変更あるっぽいですね https://gist.github.com/othiym23/c98bd4ef5d9fb3f496835bd481ef40ae

同じタイミングで、 npm v4のpre-releaseが正式に発表されています github.com

npm v4 の主な変更点

v4からの破壊的な変更についてだけまとめると以下のとおりになります

- npm search rewritten to stream results, and no longer supports sorting.
- npm scripts no longer prepend the path of the node executable used to run npm before running scripts. A --scripts-prepend-node-path option has been added to configure this behavior.
- npat has been removed.
- prepublish has been deprecated, replaced by prepare. A prepublishOnly script has been temporarily added, which will only run on npm publish.
- npm outdated exits with exit code 1 if it finds any outdated packages.
- npm tag has been removed after a deprecation cycle. Use npm dist-tag.
- Partial shrinkwraps are no longer supported. npm-shrinkwrap.json is considered a complete installation manifest except for devDependencies.
- npm's default git branch is no longer master. We'll be using latest from now on.

そのうち、気になった変更だけ幾つか整理してみます。

npm search rewritten to stream results, and no longer supports sorting.

npm searchの処理についてですが、バージョンが上がるたびに処理が遅くなっているとのことで、 ストリーム形式に書き直したそうです。この変更によって、npm searchで使っているソーティングのサポートも途切れるとのことで、 あくまでも応急処置的な対応になります。

ほんとにnpm packageの検索を効率的に行いたい場合は npms.ioを使ってくれと、npmのチームが言及しています。 npms.io

npm tag has been removed after a deprecation cycle. Use npm dist-tag.

npm packageのタグ付けを行う npm tagが廃止されて npm dist-tagを代わりに使います npm dist-tag add や npm dist-tag rm でタグの追加や削除ができますね タグ関連のコマンドを一つにまとめたという感じでしょうか docs.npmjs.com

Partial shrinkwraps are no longer supported.

npm shrinkwrapsはおもにパッケージのバージョンを固定化するために使うコマンドなのですが、v4から大きく変わるようです。 特定のバージョンをインストールするように指定する、npm-shrinkwrap.jsonは、v4からインストールされなくなります。 同様にdev環境のみいれるパッケージを package.jsonのdevDependenciesに書けるのですが、これも今回のバージョンアップで挙動が変わります。

devDependenciesに書いてあるパッケージもインストールしたい場合は、 npm shrinkwrap --devと書くことで対応できるようになります。

そこまでnpmの機能を使いこなせていない状態ですが、個人環境でいろいろ使って試してみようと思います。 v5に関しては、2017/4にはリリースするかもということなので結構目まぐるしくnpm界隈は変わっていくかと思います。