ピア依存関係をオプションに設定するにはどうすればいいですか? 質問する

ピア依存関係をオプションに設定するにはどうすればいいですか? 質問する

私はモジュール A を開発しています。ユーザーはオプションで、Winston ロガーをモジュールに挿入できるため、winstonピア依存関係になります。

ログを記録したくない別のモジュール (したがって Winston を含めない) にモジュール A をインストールしてtscそれを実行しようとすると、Typescript は次のように叫びます。

モジュール 'winston' またはそれに対応する型宣言が見つかりません。

どうすればいいでしょうか?

ベストアンサー1

NPM v7.x以降では、peerDependenciesMetapackage.json設定を使うことができ、そのオプション

たとえば、「モジュール A」の場合package.json:

"peerDependencies": { 
  "winston": "> 1.0.0 <= 1.2.10",
  "foo": "~2.3.0"
},
"peerDependenciesMeta": {
  "winston": {
    "optional": true
  }
}

この場合、モジュール A を別のプロジェクトの依存関係としてインストールすると、winston指定された semver 範囲内の依存関係バージョンのインストールが許可されます> 1.0.0 <= 1.2.10が、まったく存在しない場合はエラーが発生しないため、同様に許可されます。

この例では、fooとしてマークされていないため、依存関係が依然として必要になることに注意してくださいoptional

追加のヒント: このユーティリティを使用して、利用可能なNPMパッケージの範囲を確認およびテストできます。出典: npmjs.com、それは私にも役立ちました。

PS. これは SO での私の最初の回答です! :)

おすすめ記事