依存関係の最適化
Remixは開発環境で、future.unstable_optimizeDeps
将来の機能フラグ によって自動的な依存関係の最適化を導入しました。
これにより、この動作を選択することができます。これは、Remixの次のメジャーバージョン(別名React Router v7 (1、2)でデフォルトになります。
開発では、Viteは依存関係を事前にバンドルすることを目指しており、それにより、それらの依存関係をオンデマンドで効率的に提供することができます。 そのためには、Viteはアプリのモジュールグラフのどこから依存関係を探索するかを知る必要があります。
以前は、RemixはViteに、ルートモジュールやクライアントエントリで依存関係の検出を開始するように指示していませんでした。
つまり、開発では、アプリ内を移動するとViteは新しい依存関係に出くわし、504 Outdated Dependency
エラーが発生していました。
その結果、開発体験は、これらのエラーがHMRを壊したり、リンクナビゲーションを中止させたりすることがあるため、時折ぎくしゃくしているように感じられる可能性がありました。
また、依存関係をインタラクティブに処理することが遅くなる場合があり、ナビゲーションも遅くなる可能性がありました。
詳細については、Viteの依存関係最適化オプションを参照してください。
トラブルシューティング
Failed to resolve entry for package
これは通常、依存関係の構成ミスが原因です。
publintを使用して、問題の依存関係が誤って構成されているかどうかを確認できます。
この問題を解決するには、npm why
またはpnpm why
を使用して、どの直接依存関係をoptimizeDeps.exclude
に追加するかを判断する必要があります。
たとえば、アプリが次のエラーを発生しているとします。
確かに、publint
はjimp
パッケージが誤って構成されていると報告しています。
次に、jimp
がsvg2img
の直接依存関係によって引き込まれている間接的な依存関係であると判断します。
最後に、optimizeDeps.exclude
にsvg2img
を追加すると、この問題が解決されます。