web-dev-qa-db-ja.com

「npm重複排除」に相当するヤーンはありますか?

ヤーンを試してみたところ、実に超高速です。 package.jsonがロードされたコンソールでyarnを実行した後、すべてをインストールしました。次に、Yarnが非常に最適化されているため、何も起こらないことを期待してnpm dedupeを実行しましたが、tonのものが削除されました。 npm dedupeに相当する糸はありますか?

追加:

以下のコメントに記載されているように、おそらくyarn install --flatnpm dedupeと同等である可能性があります。 Yarnドキュメント は「パッケージの唯一のバージョンをインストールする」と説明しています。だから私は--flatで遊んだのですが、注意すべきことがいくつかあります。

  1. ツリーで複数のバージョンの要求が発生した場合、インストールするパッケージのバージョンを選択するように求められます。これは、大規模なプロジェクトにとっては大変な作業だと想像できます。プロンプトが表示された各パッケージの最新バージョンを選択したところ、ご想像のとおり、アプリを実行しようとするとcannot find moduleエラーが発生しました。
  2. npm dedupeafteryarn install --flatを実行しましたが、stillで大量の削除が発生しました。これは私にとって驚きでした。

だから私はnpm dedupeが内部で他の魔法をやっていると思っており、私は気にする必要のないプロセスについては素朴です。おそらく、ツリーをそのままにして、--flatdedupeを完全に忘れるのが最善です。

22
The Qodesmith

今でも、Yarnは重複する依存関係を最小限に抑えるという最大の仕事をしていないようです。ランニング yarn --flat互換性がない場合でも、依存関係のバージョンが1つだけになるように強制するため、これは理想的ではありません。 yarn-deduplicate 重複する要件がない場合でも一部を許可しながら、重複の数を最小限に抑えるパッケージ。 yarn-deduplicateにも--failゼロ以外の(失敗した)ステータスを返すオプション。これは、CIで実行して、依存関係を変更する人が新しい重複を導入しないようにするのに役立ちます。

1
lobati

Yarnドキュメントからの引用:

重複排除コマンドは必要ありません。 yarn installはすでに重複排除されます。

https://yarnpkg.com/lang/en/docs/cli/dedupe/

0
Patrick