インストーラーのほとんどすべてを書き直して、Windows上のNode.jsの実行にいいニュースをもたらしたnpm 3.0がリリースされた。
リリースの発表においてRebecca Turner氏は、 npmチームは、3.0ベータのリリースは"喜びと誇り" であり、彼らは"可能な限り迅速に製品準備ができるためにnpmユーザーコミュニティの作業を楽しみにしている。"と話した。
Turner氏は、ほとんどすべての変更に責任を持つCLIプログラマであり、アップデートには8ヶ月を要したと言う。
npmも最も重要な変更のひとつは、依存関係の更新だ。平坦化された依存関係により、多すぎる依存関係によりWindowsファイルシステムをブレークし、パスがExplorerや他の一般的なツールが処理するためには長すぎるケースを排除することが期待されている。
Turner氏は言う:
依存関係は最大限、平坦化されています。可能な限り、すべてのあなたの依存関係と、それらの依存関係、そして、それらの依存関係は、プロジェクトのnode_modulesフォルダにネストなしでインストールされます。2個(以上)のモジュールが依存性のコンフリクトを持つ場合だけ、ネストの下にモジュールが存在します。
このアップデートはまた、"最初から"重複が排除されていることを意味し、git depsは重複を排除し、さらにコマンドは"重複に気づける"ようになっている。
InfoQに対してTurner氏は、ユーザーとして自動的に重複を排除できることに興奮しており、"結果的により小さなインストールになる"と話した。
他のコマンドの動作もまた、依存性のアップデートの影響を受けている。このアップデートでnpm uninstall
は、以前はその下にインストールされていた依存性を削除して、他のモジュールを必要としないように、モジュールの依存関係を削除した。npm自身の依存性も"平坦化、依存性排除、バンドル"されているため、npm 3.0は、npm 2.0でパックやパブリッシュをすることができない。
その他、インストーラーへの実用的な変更として、npmがパッケージのステップを実行する方法の改善が含まれている。前のバージョンでは、インストーラーは、パッケージが決めたステップの実行をすぐに開始していた。3.0では、インストーラーはステップを実行する代わりに、すべてのパッケージを同時に実行する -- 移動前に各ステージの完了を待つ。開発者にとってこれは、多くの競合状態が解消することを意味する: コードを容易にすることができる。
Turner氏によると、アップデートによりライフサイクルスクリプトは、より予測可能で、エラー発生が少なくなり、新しい--dry-run
フラグのようなその他の機能により、簡単に実装も可能になると言う。任意のアクションを取る前、インストーラーが変更する前と後の完全なツリーを詳細なログを出力し、開発者がそれを見ることができるとTurnerは言う。
Turner氏は、npm 3.0 betaは、より少ないバグとより安定したプラットフォームになることを期待している。
このベータリリースでは、警告が予想されており、npm 3.0は、チームが"それが安定したと確信できるか、コミュニティで影響のある重大な変更があると評価される"までは、ベータのままである。Turnerも、これは大きく書き換えていて、バグが残っているため、"本番の維持やフロントラインの展開継続"ではなく、"クリティカルでないCI環境と、日々の使用"に使用されるべきであると指摘する。
優秀なInfoQ読者がnpmに貢献するには、いくつかの方法がある: ドキュメントとコードの両方の通常のプルリクエスト、バグレポート、フィーチャーリクエストは、常にissue trackerで受け付けている。直接的な貢献だけでなく、npmチームは教育のチュートリアルと"問題の解決方法と私が使用しているモジュール" のような記事、そして多くの場合、npm Weeklyの記事へのリンクなどに感謝している。