35
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

インストール時のPeer依存パッケージに関する警告の対処法

Last updated at Posted at 2019-08-16

時折 yarn を使ってると警告が出て具体的にどう対処すればいいか忘れることがあるのでメモ.

今回は依存関係でパッケージ間で共通して使われているパッケージが解決できないときの警告の対処法です.

warning "${MODULE_A}" has unmet peer dependency "${MODULE_B}".

TL;DR

警告なので無視するのも一つの手です.

どうしても警告が気になる場合は依存関係で共通して使われるパッケージを package.json に追加することで解決はします.
間接的な依存パッケージとしてpackage.jsonに含むことになります.

yarn add ${MODULE_B}

# 開発用であればオプションを指定
yarn add -D ${MODULE_B}

警告メッセージの説明

具体的には以下の様な警告が出ます.

warning "@mypkg/mod1 > firebase-admin > @firebase/database@0.4.12" has unmet peer dependency "@firebase/app@0.x".
warning "@mypkg/mod1 > firebase-admin > @firebase/database@0.4.12" has unmet peer dependency "@firebase/app-types@0.x".
warning "@mypkg/mod1 > firebase-admin > @firebase/database > @firebase/database-types@0.4.2" has unmet peer dependency "@firebase/app-types@0.x".

この警告をわかりやすく図解すると以下の様になります.

@mypkg/mod1
  ┗ firebase-admin
      ┗ @firebase/database@0.4.12
        ┣ @firebase/app@0.x (peer)
        ┣ @firebase/app-types@0.x (peer)
        ┗ @firebase/database-types@0.4.2
            ┗ @firebase/app-types@0.x (peer)

(peer) となっているところは具体的には、 peerDependencies で指定されているものです.
これらの依存を解決させるために @mypkg/mod1package.json の依存関係に @firebase/app@firebase/app-types を指定することで警告が無くなります.

"peerDependencies": {
  "@firebase/app": "0.x",
  "@firebase/app-types": "0.x"
}
"peerDependencies": {
  "@firebase/app-types": "0.x"
}

無視しても大丈夫

そもそも警告なので対応しなくても良い.
yarn.lockで間接的なバージョンも固定されるので環境依存も問題ありません.

プロジェクトや人によっては無視してることもある様です.

対処したらしたで間接的な依存パッケージなので、依存していたパッケージ等を削除したりすると何処からも利用されない依存パッケージとしてpackage.jsonに残ってしまうのも危惧されます.

35
21
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
35
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?