web-dev-qa-db-ja.com

yarn.lockとnpmのpackage-lockの違いは何ですか?

誤ってnpm install Yarnを使用するプロジェクトで、npmがpackage-lock.jsonファイル。

ヤーンは、ロックファイルを使用して、しばらくの間障害のある シュリンクラップ機能 しかなかったnpmよりも信頼性が高く決定的な依存関係のインストールを生成したため、人気が急上昇したことを知っていますこのnpmロックファイルビジネスをどうするべきか、そしてYarnを使い続けることについて説得力のあるものがあるかどうかはわかりません。

したがって、糸とシュリンクラップのStackOverflowの 前のQとA の精神で、私は次を尋ねます:

  • 2つのパッケージマネージャーの間に、信頼性の点で実質的な違いはありますか?
  • そうでない場合、「もっと絵文字。????」以外にYarnを使い続ける説得力のある理由はありますか?
33
fny

紙の上では、YarnとNPM 5はほぼ同等に見えます。どちらにも確定的なロックファイルがあり、機能的にはほぼ一致しています。ヤーンはNPMを革新する触媒であると言う人もいます。

しかし、NPM 5を1か月間経験した後、私のチームはYarnに移行することにしました。

技術的には、NPMのバージョン間でNPMがまったく同じnode_modulesフォルダ。一方、Yarnの依存関係の正確な巻き上げ/順序付けは、Yarnのバージョンに依存し、Yarnのバージョンによって変わる可能性があります。一般に、これによる影響はほとんどありません。

なぜヤーンを使用するのですか?マージと信頼性。

ヤーンは、より単純なyarn.lockマージしやすいファイル。ソロ開発者の場合、これはおそらく影響しませんが、依存関係の変更をコミットする複数の共同作業者がいるチームの場合、それはすぐに大きな問題になります。 NPMのpackage-lockは事実上マージ不可能であり、最終的には再生成または苦労しなければなりません。一方、Yarnでは、マージは簡単で予測可能です。

参照: https://yarnpkg.com/blog/2017/05/31/determinism/

補足として、ヤーンは平均してより信頼性が高いこともわかりました。

18
Rajiv Makhijani