2017-04-26 14 views
1

私たちは再使用可能な反応成分を作り出しています。各コンポーネントはwebpackでnpm libとしてラップされます。 これらのlibのそれぞれは、依存関係をピア依存関係としてマークし、アプリケーションがそれを使用する際にインストールすることを期待していますか?あるいは、それらは定期的な依存関係であるべきですか?その場合、重複したノードモジュールの危険性はありますか? 良い例は反応するでしょう 1. libとしてラップするコンポーネントは、反応する必要があります。 2.このライブラリを使用しているアプリケーションは反応が必要です libのピアの依存関係や依存関係に反応する必要がありますか?webpackでlibsを作成するときに、どのようなピア依存関係が必要ですか?

答えて

2

React/ReactDOMは必ずピア依存関係である必要があります。依存関係が設定されていて、ユーザーが指定したバージョンと異なるバージョンをインストールしていると、悪いことが起こる可能性があります。

彼らのプロジェクトは、2つの別々のバージョンの反応がインストールされてしまう可能性があります。これは、ビルドツール、コードエディタで大混乱を招き、それに対応することができます。

+0

ok、これは私たちの考えでした。コンポーネントによって使用される他のlibsについてはどうでしょうか?消費アプリでは必ずしも使用されていないライブラリですか? libに詰め込むべきかどうかを決める良い方法は何ですか?そうではありませんか? –

1

です。反応のようなものについては、ほとんどの場合、ピア依存関係にしたいと思うでしょう。あなたが別のパッケージからコンポーネントをインポートしている場合

  • が、あなたはかなり
  • ロードされた反応の2つのコピーを持つことは、エラーの原因になります、それをレンダリングするために自分自身を反応させる使用する必要があるためです。

したがって、このような状況では、ピア依存関係を使用して、バンドル内に複数の依存関係のコピーが残っているのを防ぐ必要があります。

他の依存関係については、必要でないかもしれません。例えば、あなたが依存関係を持っていて、あなたのアプリケーションが両方ともユーティリティ関数パッケージに依存しているのであれば、それは通常の依存関係として持つことができます。依存関係を^で指定していると仮定すると、パッケージマネージャ(npm、yarn)は依存関係を除外して処理されるため、ビルド時に2つのコピーになる唯一の方法は、異なるセーバーのメジャーバージョンに依存するかどうかです。あなたのアプリとあなたの依存関係が共通のパッケージを個別に使用している場合、それは大丈夫です。

基本的に、ピア依存関係を作ることを決定するときに質問したい質問は、「このパッケージの2つの異なるバージョン(ピア依存関係にすること)を避ける必要がありますか?それは正常な依存関係があれば大丈夫ですか?

関連する問題