Help us understand the problem. What is going on with this article?

package.jsonのpeerDependenciesMetaってなんだ?

TL;TD

  • package.jsonに記述するフィールドで、peerDependencies で定義したバージョンを満たしてなくても警告を出さなくするためのオプションを設定することができる (2020/05/03時点)
  • パッケージを公開する人以外はあんまり気にしなくても大丈夫そう

そもそもpeerDependencies とは

peerDependencies は、あるモジュールXに対するインタフェースを持っており、モジュールXから参照されることを想定するが、モジュールXのどこまでにバージョン互換性を持っているかを表記したものです。

例えば eslint-plugin-vue は、 eslint でVueファイルを扱うためのプラグインですが、どのバージョンの eslint に対して互換性のあるプラグインなのかがpeerDependencies に記述されています。

package.json
  "peerDependencies": {
    "eslint": "^5.0.0 || ^6.0.0"
  }

(引用)

上記の例だと、eslint-plugin-vue は、eslintの5系と6系に対応しているということになります。

その互換性をあえて無視して、eslintは4系を、eslint-plugin-vueは最新版を指定してインストールしてみます。すると以下のような、互換性がない旨の警告が出ます。

$ yarn add eslint@4.0.0 eslint-plugin-vue
warning " > eslint-plugin-vue@6.2.2" has incorrect peer dependency "eslint@^5.0.0 || ^6.0.0".

peerDependenciesMeta とは

peerDependenciesMeta は、 peerDependencies の設定に関して、追加情報を定義するためのフィールドで、現在(2020/05/03)は、 optional 属性のみ定義可能なようです。

optional属性はpeerDependenciesの互換性を無視しても良いかをBooleanで設定します。

例えば、もしeslint-plugin-vuepackage.jsonに、以下のようにpeerDependenciesMetaが設定されていると、前項の警告は出なくなります。(※ただし使用するパッケージマネージャによる)

package.json
  "peerDependenciesMeta": {
    "eslint": {
      "optional": true
    }
  }

参考

Sa2Knight
下の上ぐらいの伸び悩んでるWebプログラマ。色々な記事を読んで勉強しつつ、自ら学んだことを投稿して整理したりしているので誤った情報を発信してるかもしれません。お気づきの際はご指摘頂ければ幸いです。
https://github.com/Sa2Knight/Curriculum-Vitae
studist
「伝えることを、もっと簡単に」をミッションにビジュアルSOPマネジメントプラットフォームのBtoB SaaS「Teachme Biz」を開発・運営するスタートアップ
https://medium.com/studist-dev
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした