angular 6
プロジェクトでは、angular cli
コマンドng g lierary @some/libName
を使用してangularライブラリを作成しました。私のライブラリには、@ng-bootstrap/ng-bootstrap
を必要とするコンポーネントがあります。 npm i --save @ng-bootstrap/ng-bootstrap
で追加しました。
コマンドng build @some/libName --prod
を使用してライブラリをビルドしようとすると、エラーが発生します。
Dependency @ng-bootstrap/ng-bootstrap must be explicitly whiteliste
誰かがそれを解決しましたか?
この警告は ng-packagr
。 ng-packagr
は、すべての依存関係を"whitelistedNonPeerDependencies": []
プロパティin ng-package.json
。例えば:
{
"whitelistedNonPeerDependencies": [
"tslib",
...
]
}
自分でこれに出くわしました。この警告は ng-packagr
私は思う(angle-cliはライブラリの生成とパッケージ化に依存している)。 「ホワイトリスト」が何を意味するのか正確にはわかりません。そのフレーズはng-packagrのドキュメントでは直接説明されていないようですが、 ng-packagrリポジトリのこの問題 問題を回避する方法のさまざまなオプションの。
- ピア(Angular、RxJSなど):このユースケースでは、サードパーティの依存関係はライブラリのpeerDependencyです。ライブラリのユーザーは、依存関係セクションにライブラリとサードパーティライブラリの両方を含める必要があります。
- 埋め込み(レガシーJSライブラリなど):レガシーJavaScriptライブラリ(独自のバックエンドへのアダプターなど)があり、ライブラリにレガシーコードを埋め込みたい(必要な)場合。この場合、サードパーティの依存関係はライブラリのdevDependencyであり、ライブラリのバンドルに埋め込まれます。
- 混合モード-埋め込みとピア(例:UXガイドライン、Angularizedスタイルガイド):このユースケースでは、サードパーティの依存関係はpeerDependencyですが、ライブラリに(部分的に)埋め込まれています。ライブラリ内のサードパーティライブラリの既存のCSS/SCSS/LESSスタイルシートを再利用して、ライブラリ内のサードパーティのコードを「埋め込む」ことができます。同時に、サードパーティの依存関係はライブラリのpeerDependencyです。
githubの問題 に詳細があります。
これをng-package.json
に追加し、私にとってはうまくいきました
{
"$schema": "./node_modules/ng-packagr/ng-package.schema.json",
"lib": {
"entryFile": "public_api.ts"
},
"whitelistedNonPeerDependencies": [
"."
]
}