第5章 パッケージ管理 パッケージ管理
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
章では、Nodeのデフォルト・パッケージ・マネージャであるnpmについて簡単に学んだ。もっと深く見て、Node用のパッケージの発見、使用、作成に慣れよう。
パッケージという用語は、ソフトウェアの世界ではコードを含むフォルダを表すのに使われる。Nodeでは、そのフォルダにはパッケージのメタデータと依存関係を記述したpackage.jsonファイルもある。
モジュールという用語は、一連の機能をカプセル化した単一のファイル、または関連するファイルの集合を指す。モジュールにより、開発者はコードを再利用可能な個別の単位に組織化することができる。Nodeパッケージは多くの場合、単一Nodeモジュールを表すが、複数のモジュールを持つパッケージもある。
パッケージとは通常、プロジェクトが依存する外部コードのことを指すが、パッケージ・コードを表現するのに適した言葉はジェネリックだと思う。自分自身のコードの一部をジェネリックにし、それをパッケージに抽出することで、多くのプロジェクトで使うことができる。
パッケージ管理の導入
パッケージが単なるフォルダーなら、なぜパッケージ・マネージャーが必要なのか?
パッケージの数が多く、パッケージが他のパッケージに依存している場合、これらのパッケージフォルダを追跡することは困難になる。これは、同じNodeプロジェクトで作業している開発者チームに特に当てはまる。パッケージ管理ツールは、パッケージ周りの一般的なタスクを処理するための簡素化された体系的なアプローチを提供する。パッケージ管理ツールは、パッケージのインストール、アップデート、削除を行うシンプルなコマンドを提供し、プロジェクトが正しく機能するために必要なものが、そのプロジェクトを実行しているすべてのマシンで同様に利用できるようにする。
より重要なのは、パッケージ管理ツールは、プロジェクト内のすべての依存関係(通常、 依存関係ツリーと呼ばれる)の競合を管理できるということだ。これは通常、 依存関係ツリーと呼ばれる。プロジェクトには主な依存関係のリストがあり、主な依存関係にはそれ自身の依存関係があるため、ツリーと呼ばれる。 推移依存という用語は、依存関係ツリーの最初のレベルを超えた、プロジェクト内のすべての依存関係を指すためによく使われる。
注
npmツールは、Nodeプロジェクトでパッケージとその依存関係を管理するためのデフォルトとして長い間使われてきたが、今日、Yarn、pnpm、JSRといった代替ツールがいくつかある。npmに代わるこれらのツールには、独自の機能と利点がある。これらはしばしば、パフォーマンス、ディスク使用量、バージョン管理について改善を提供している。このような健全な競争が、npmの改善も後押ししている。本書ではnpmのみを取り上げるが、別のパッケージマネージャーを使うことになるかもしれない。パッケージ管理の基本概念はどれも似ているが、コマンドインタフェースや舞台裏で起こっていることは少し違う。
npmという用語は、主にNodeに同梱され、Nodeパッケージを管理するためのツールを提供するCLI(npm コマンド)を指すのに使われる。また、多くのオープンソースnpmパッケージのパブリックレジストリをホストするnpm Webサイトもある。npmレジストリは、JavaScriptパッケージでいっぱいの大きな倉庫のようなもので、プロジェクトに追加する必要のある一般的な機能や関数のための多くのオプションを提供している。例えば、プロジェクトでウェブリクエストを処理したり、ウェブソケットを処理したり、データベースに接続したりする必要がある場合、これらの機能をゼロから構築したり、低レベルのコードを扱ったりする必要はない。パッケージ・レジストリから既成の、そして多くの場合テスト済みのジェネリック・ソリューションをダウンロードして使用し、その上にカスタム・ニーズを構築することができる。 ...