package managerの実装について
https://github.com/g-plane/tiny-package-manager/tree/master
https://zenn.dev/sa2knight/articles/d473ca2894b659
上記のサイトを参考にしながら、どのような実装になっているのかを理解していきたいです。
理解したい部分は
- インストールするものをどのように取得しているのか
- どのようにインストールをしているのか
の2点です。
インストールするものをどのように取得しているのか
package.jsonやnpm i
で指定したライブラリをインストールするリストに格納するのはなんとなくわかるのですが、依存関係があるライブラリをどのようにして取得しているのかが、疑問でした。
npmレジストリで公開されているパッケージは、マニフェストファイルと呼ばれるものがあり、ここに依存関係があるパッケージなどの情報が記載されているらしい。
どのようにインストールしているのか
上記で記載した、マニフェストファイルの中にパッケージをインストールするためのURLが記載されており、そこからインストールしている。
tar形式でインストールされるので、インストール後回答を行っている。