1. ホーム
  2. javascript

[解決済み] NPMよりYarnを使うべき時とは?その違いとは?

2022-04-27 13:45:21

質問

とはどのような違いがあるのでしょうか? とNPMの違いについて教えてください。 この質問を書いている時点では、インターネット上でNPMコマンドのYarnに相当するものを示すいくつかの記事しか見つけられませんでした。 これ .

この2つは同じ機能を持っているのでしょうか(Yarnはローカルキャッシュを行い、パッケージを一度だけダウンロードする必要があるようです)、これ以外にNPMからYarnに移行する利点はあるのでしょうか?

どのように解決するのですか?

UPDATE:2018年3月(ちょっと遅いですが...。)

バージョン5以降 npm

  • という 'lockfile' を生成します。 package-lock.json これは、yarn (あるいは他の) ロック機構が行うのと同じ方法で、依存関係ツリー全体を修正します。
  • ツールが作られました
  • --save が暗示されるようになりました。 npm i
  • ネットワークとキャッシュの使用率の向上

npm 5.7.0のさらなる導入 その npm ci コマンドで見つかるパッケージのみをインストールすることで、継続的インテグレーション環境においてより迅速に依存関係をインストールすることができます。 package-lock.json (を使用します(もし package-lock.jsonpackage.json は同期していない)。

個人的に を使用しています。 npm .


オリジナル

ドキュメントから直接引用するのは嫌なのですが、このドキュメントには 素晴らしい その理由を簡潔に説明してくれているので、これ以上考えをまとめることはできないと思います。

大きくは。

  1. どの開発現場でも、常に同じものを手に入れることができるのです。 マシン

  2. という操作をパラレル化します。 npm にはないものであり

  3. ネットワークをより効率的に利用することができます。

  4. より効率的になる可能性があります。 他のシステムリソース(RAMなど)を使用する。 もあります。

みんなの制作体験はどうなっている?一般人には幼児だから、誰にもわからない。

TL;DR Yehuda Katzより :

<ブロッククオート

Yarnのロックファイルでは、最初から、繰り返し yarn on the same repository results in the same packages.

第二に、Yarnはコールドキャッシュでも良いパフォーマンスを発揮しようとします。 特にウォームキャッシュの場合。

最後に、Yarnはセキュリティをコアバリューとしています。

素敵なブログ記事

" NPM vs Yarn チートシート " by Gant Laborde

少し長いバージョン プロジェクトより :

<ブロッククオート

速い。Yarnはダウンロードしたパッケージをすべてキャッシュするため、ダウンロードする必要はありません。 また また、並列処理を行うことでリソースを最大化し そのため、インストールにかかる時間はかつてないほど短縮されました。

信頼性が高い。詳細かつ簡潔なロックファイル形式、そして 決定論的なアルゴリズムでインストールを行うため、Yarnは あるシステムで動作したインストールは、全く同じように動作します。 を使用します。

安全です。Yarnはチェックサムを使用して、インストールされたすべての製品の完全性を検証します。 パッケージのコードが実行される前に、そのパッケージの

そしてから README.mdの :

  • オフラインモード。以前インストールしたことのあるパッケージは、インターネットに接続されていなくても再度インストールすることができます。
  • 決定論的:インストールの順序に関係なく、すべてのマシンで同じ依存関係が同じように正確にインストールされます。
  • ネットワークパフォーマンス。Yarnは効率的にリクエストをキューイングし、リクエストウォーターフォールを回避することで、ネットワークの使用率を最大化します。
  • 複数のレジストリ。npmまたはBowerのいずれからもパッケージをインストールでき、パッケージのワークフローを同じに保つことができます。
  • ネットワークレジリエンス。1回のリクエストが失敗しても、インストールが失敗することはありません。リクエストは失敗しても再試行されます。
  • フラットモード。依存関係のバージョンの不一致を単一のバージョンに解決し、重複を回避します。
  • 絵文字を増やしました。????