以下の2つの違いが分からなくて「ぜんぜん意味がわからん😭😭😭」となったのですが
- dependencies
- peerDependencies
この2つは、「銃」と「マガジン」の関係に例えると分かりやすいかもしれません🔫
例えば
- 銃A
- 銃Aに装着するためのマガジンB
の2つがあるとします。
銃AはマガジンBがないと撃てません。
それに対して、マガジンBは銃Aがなくても弾を装填したりと「マガジン本来の機能」は果たすことができます。
ただ、マガジンBの本来の役割は「銃Aに装着されて撃てる状態にすること」なので、「マガジンBは銃Aのために存在する」とも言えます。
つまり
- 銃AはマガジンBがないと使えない
- マガジンBは銃Aがなくても使えるが、銃Aに使われることが前提となっている。
という関係が言えます。
これを
- dependencies
- peerDependencies
に置き換えると
銃Aのpackage.json
には、以下のように書けます。
"dependencies": { "マガジンB": "^1.0.0" }
このように書くと「銃AはマガジンBがないと使えませんよ!」というのを表せます。
逆にマガジンBのpackage.json
には、以下のように書けます。
"peerDependencies": { "銃A": "^1.0.0" }
このように書くと「マガジンBは銃Aが使うことを想定してますよ!」というのを表せます。
まとめ
・ぶっちゃけどうでもいい
たとえば
「npm7以降のバージョンでは、npm install
するとpeerDependencies
に記載されているパッケージもインストールされる」
など、npmのバージョンによっても色々挙動が変わるっぽいのですが、パッケージを公開するような人でない限り、peerDependencies
を使う機会は一生なさそうなので、「peerDependenciesはマガジンのようなもの」という雑な理解でおわりたいと思います😭
調べないといけないことは他にも無限にあるのだ🌊
おわり
コメント