kei615ykhm’s programming learning blog

プログラミングを0から学んでいる学生の備忘録

【学びのメモ】パッケージ管理の重要性

ある方から教わったパッケージとパッケージマネージャーについての記録。
忘れないように整理して、書き留めておく。

 

 

パッケージとは

例えば、JavaScriptのプロジェクトでは、npm installなどのコマンドを利用して、「package.json」と「package-lock.json」に記載されたパッケージをインストールする。

しかし、これらのパッケージは他のパッケージに依存していることが多く、その依存関係が繰り返されるため、実際には非常に多くのパッケージがインストールされることになる。

その結果、インストールされたファイルの容量が数百MBに膨れ上がることもある。

 

GitHubを使ってコードを管理するとき、このような巨大な「node.modules」フォルダをそのままpushするのは現実的ではない。

そこで、人々は知恵を絞り「package.json」というファイルだけを共有する方法を考え出した。

「package.json」には、プロジェクトで使用するパッケージの情報が含まれていて、このファイルを基にnpm installコマンドを実行すれば、各開発者が同じパッケージをインターネットからダウンロードして自分の環境にインストールすることが出来る。

 

これらの仕組みを提供するのがパッケージマネージャーだ。

 

パッケージマネージャーとは

パッケージマネージャーは、各開発者の個人用パソコンにインストールされていて、共有された「package.json」ファイルを読み取って必要なパッケージをインストールする。

ここでいうパッケージマネージャーは、npm(Node.js)だ。

 

つまり、「package.json」ファイルさえあれば、「node_modules」フォルダを修正、復元できるため、巨大な容量をリポジトリで管理する必要がなくなったということ。

 

.gitignoreの設定

設定をしないままでは、「node_modules」フォルダはpush時にリポジトリに含まれてしまう。

そのため、「node_modulesはgitリポジトリに含めなくても良い」という指示をしておく必要がある。