peerDependenciesとは?【package.json】

以下の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はマガジンのようなもの」という雑な理解でおわりたいと思います😭

調べないといけないことは他にも無限にあるのだ🌊

 

おわり

Node.js
スポンサーリンク
この記事を書いた人
penpen

1991生まれ。WEBエンジニア。

技術スタック:TypeScript/Next.js/Express/Docker/AWS

フォローする
フォローする

コメント

タイトルとURLをコピーしました