Angular 9アプリをAngular 10バージョンにアップグレードしようとしていますが、アップグレード後に以下の警告が表示されます
WARNING in calendar.reducer.ts depends on lodash/keys. CommonJS or AMD dependencies can cause optimization bailouts.
ファイルに以下の行を追加しましたangular.json
が、問題は解決されませんでした
"allowedCommonJsDependencies": ["lodash"]
上記の問題をどのように修正すればよいでしょうか。
ベストアンサー1
npmパッケージlodash
自体はECMAScriptモジュールではないため、警告が表示されます。その結果、コンパイラが実行できないため、バンドルサイズが大幅に増加する可能性があります。木を揺らす警告を取り除く方法は次のとおりです。
ESモジュール化ライブラリに置き換える(推奨)
いくつかのライブラリはESモジュール化ビルドを提供しています。 の場合はlodash
、次のように置き換えることができます。ロダッシュ。
走るnpm install --save lodash-es
。
lodash
ここで、からのすべてのインポートを に置き換えますlodash-es
。また、 ES インポート ステートメントを使用してライブラリをインポートするようにしてください。
import { keys } from 'lodash-es';
これにより、コンパイラはパッケージから未使用のシンボルを最適化できるようになります。
CommonJS 依存関係をホワイトリストに登録する
ライブラリに ES モジュール化ビルドがない場合、または何らかの理由で気にしない場合は、ファイル内の特定の CommonJS 依存関係を許可できますangular.json
(これにより、アプリケーションのバンドル サイズが大幅に増加する可能性があります)。
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"allowedCommonJsDependencies": ["lodash"]
}
}
}
Angular CLI バージョン 10.0.1 以降では、 で glob を使用できます
allowedCommonJsDependencies
。つまり、 を渡すとlodash
、サブパス (例lodash/keys
) も許可されます。
ドキュメント参照:https://angular.dev/tools/cli/build#configuring-commonjs-dependencies