ライブラリ パッケージにノード モジュールを含める必要がありますか?
P粉716228245
P粉716228245 2023-09-12 19:36:43
0
1
605

私は React コンポーネント ライブラリを開発しています。このライブラリは、いくつかの内部 NextJs プロジェクトで使用されます。

NextJs との互換性の理由から、このライブラリはある時点で CommonJs に変換する必要があります。

問題は、私のライブラリの一部の npm 依存関係が CommonJS を処理しないことです。これは、たとえばスワイパーの場合に当てはまります。

したがって、選択肢は 2 つあります:

  • npm の依存関係をpeerDependency として宣言し、ライブラリの各コンシューマーにそれらを正しくトランスパイルさせることになります。これによりライブラリ パッケージは軽量になりますが、各プロジェクト (NextJs や Jest など) に多くの構成制約が生じます。
  • または、パッケージに npm 依存関係を含めます。これはアンチパターンのように思えますが、これにより CJS と MJS を公開できるようになります。ライブラリの利用者はほとんど何もする必要がありません。

この 2 つを組み合わせることもできます。CommonJs および ES モジュールのすべての依存関係の管理を無視し、必要なものだけを置き換えます。

###どう思いますか?

P粉716228245
P粉716228245

全員に返信(1)
P粉647504283

同じ状況です。基盤となる ESM モジュールを含むコア ライブラリに依存する Next.js アプリケーションがあります。ただし、依存関係をバンドルしないことをお勧めします。ダウンストリーム アプリケーションにも同じ依存関係がある可能性があり、それらを 2 回ロードすることになります。また、他のサードパーティの依存関係 (ESM 依存関係) でこの問題が発生したことがあるかもしれません。これらを next.config.jstranspilePackages リストに追加するだけです: https://nextjs.org/docs/app/api-reference/ next-config-js /transpilePackages. next/jest も使用していますが、これも設定を取得して機能しているようです。唯一の注意点は、@babel/runtime をトランスパイルする必要があることがわかりましたが、それは jest が実行されているときのみです。そうしないと、メイン アプリケーションが壊れてしまいます。

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート