私はモジュール A を開発しています。ユーザーはオプションで、Winston ロガーをモジュールに挿入できるため、winston
ピア依存関係になります。
ログを記録したくない別のモジュール (したがって Winston を含めない) にモジュール A をインストールしてtsc
それを実行しようとすると、Typescript は次のように叫びます。
モジュール 'winston' またはそれに対応する型宣言が見つかりません。
どうすればいいでしょうか?
ベストアンサー1
NPM v7.x以降では、peerDependenciesMeta
package.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 での私の最初の回答です! :)