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生まれ。
2019年くらいからフロントエンドエンジニアを目指している元アフィリエイターです💩

penpenをフォローする
penpenをフォローする
penpenメモ

コメント

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