web-dev-qa-db-ja.com

Yarn over NPMを使用する場合違いは何ですか?

Yarn とNPMの違いは何ですか?この質問を書いている時点では、 this のようなNPMコマンドに相当するYarnが何であるかを示すインターネット上の記事をいくつか見つけることができます。

彼らは同じ機能を持っていますか(Yarnはローカルキャッシングを行い、パッケージを1回ダウンロードするだけでいいように見えます)が、これ以外にNPMからYarnに移行する利点はありますか?

75
Asha

更新:2018年3月(少し遅れて...)

バージョン5以降、npm

  • package-lock.jsonと呼ばれる 'lockfile'を生成します。これは、糸(または他の)ロックメカニズムと同じように、依存関係ツリー全体を修正します。
  • ツールが作成されました
  • --savenpm iに暗黙的に含まれるようになりました
  • より良いネットワークとキャッシュの使用

npm 5.7.0がさらに導入されましたnpm ciで見つかったパッケージのみをインストールすることにより、継続的な統合環境で依存関係をより迅速にインストールするpackage-lock.jsonコマンド(package-lock.jsonpackage.jsonは同期されません)。

個人的に、私はまだnpmを使用しています。


元の

私はドキュメントから直接引用することを嫌いますが、彼らは理由を説明する素晴らしい仕事をします、それをさらに要約する方法がわかりませんアイデア。

主に:

  1. すべての開発マシンで同じものを取得していることを常に知っている

  2. npmが実行しない操作を並列化し、

  3. ネットワークをより効率的に使用できます。

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

人々の制作経験はどうですか?誰が知っているか、それは一般大衆にとって幼児です。

TL; DR イェフダ・カッツから

Get-goから、Yarnロックファイルは、同じリポジトリでyarnを繰り返し実行すると同じパッケージになることを保証します。

次に、Yarnはコールドキャッシュを使用して、特にウォームキャッシュを使用して、良好なパフォーマンスを得ようとします。

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

素敵なブログ投稿

NPM vs糸チートシート 」ガント・ラボデ

少し長いバージョン プロジェクトから

高速:Yarnはダウンロードしたすべてのパッケージをキャッシュするので、再び必要になることはありません。また、リソースの使用率を最大化するために操作を並列化するため、インストール時間が従来よりも高速になります。

信頼性:詳細でありながら簡潔なロックファイル形式とインストールの決定論的アルゴリズムを使用して、Yarnは1つのシステムで動作するインストールが他のシステムでもまったく同じように動作することを保証できます。

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

そして README.md から:

  • オフラインモード:以前にパッケージをインストールしたことがある場合は、インターネットに接続せずに再度インストールできます。
  • 決定的:インストール順序に関係なく、すべてのマシンに同じ依存関係がまったく同じ方法でインストールされます。
  • ネットワークパフォーマンス:ヤーンはリクエストを効率的にキューに入れ、ネットワークの使用率を最大化するためにリクエストのウォーターフォールを回避します。
  • 複数のレジストリ:npmまたはBowerからパッケージをインストールし、パッケージワークフローを同じにします。
  • ネットワークの復元力:単一の要求が失敗しても、インストールは失敗しません。リクエストは失敗時に再試行されます。
  • フラットモード:依存関係の不一致バージョンを単一バージョンに解決して、重複の作成を回避します。
  • より多くの絵文字。 ????
54
msanford

PNPMを使用する

PNPMおよびYarnに対するNPMの利点

pnpmは、ハードリンクとシンボリックリンクを使用して、モジュールの1つのバージョンをディスクに一度だけ保存します。たとえば、npmまたはYarnを使用する場合、同じバージョンのlodashを使用するプロジェクトが100個ある場合、ディスク上に100個のlodashのコピーがあります。 pnpmを使用すると、lodashはディスク上の1か所に保存され、ハードリンクによってそれがインストールされるべきnode_modulesに配置されます。

その結果、ディスク上でギガバイトのスペースを節約でき、インストールがはるかに高速になります! pnpmが作成する一意のnode_modules構造の詳細とNode.jsエコシステムでうまく機能する理由が必要な場合は、この小さな記事を読んでください: なぜpnpmを使用する必要がありますか?

インストールする方法?

npm install -g pnpm

今すぐパッケージをインストールする

pnpm install -g TypeScript // or your desired package

プログレスバーは、NPMYARN、およびPNPM(短いバーの方が優れています)でかかったインストール時間を示しています。enter image description here

ベンチマークの完全なチェックをクリックしてください

詳細については、 https://www.npmjs.com/package/pnpm をご覧ください。

3
WasiF

Yarnを使用してパッケージをインストールする場合(yarn add packagenameを使用)、パッケージをディスクに配置します。次回のインストール時に、HTTPパッケージを使用してレジストリからtarballを取得する代わりに、このパッケージが使用されます。

Yarnには便利なライセンスチェッカーが付属しています。これは、依存するすべてのモジュールのライセンスをチェックする必要がある場合に非常に強力になります。

プロプライエタリなソフトウェアで作業している場合、どちらを使用するかは重要ではありません。 npmでは、npm-shrinkwrap.jsを使用できますが、Yarnでyarn.lockを使用できます。

詳細については、次のブログをご覧ください

https://blog.risingstack.com/yarn-vs-npm-node-js-package-managers/

1
ganesh kalje

初心者のためにより良い概要を提供しようとしています。

npmは、歴史的に(2010)JavaScriptの最も人気のあるパッケージマネージャーです。プロジェクトの依存関係の管理に使用する場合は、次のコマンドを入力できます。

npm init

これにより、package.jsonファイルが生成されます。プロジェクトのすべての依存関係が含まれています。

それから

npm install

ディレクトリnode_modulesを作成し、その中に依存関係(package.jsonファイルに追加したもの)をダウンロードします。

また、package-lock.jsonファイルも作成します。このファイルは、生成された依存関係のツリーを記述するために使用されます。これにより、開発者はまったく同じ依存関係をインストールできます。たとえば、開発者が依存関係をv2にアップグレードしてからv3にアップグレードし、別の開発者がv3に直接アップグレードすることを想像できます。

npmは、2つの開発者が異なるnode_modulesディレクトリを使用して異なる動作。 ** 2018年2月など、npmの評判は悪かった:バージョン5.7.0で、LinuxシステムでSudo npmを実行するとシステムファイルの所有権が変更され、オペレーティングシステムが完全に破損するという問題が発見されました。

これらの問題などを解決するために、 Facebookは新しいパッケージマネージャーを導入しました (2016):Yarnaより速く、より安全に、より確実にJavaScriptのパッケージマネージャー。

次のように入力して、プロジェクトにYarnを追加できます。

yarn init

これにより、package.jsonファイルが作成されます。次に、次のものを使用して依存関係をインストールします。

yarn install

フォルダーnode_modulesが生成されます。 Yarnは、yarn.lockというファイルも生成します。このファイルはpackage-lock.jsonと同じ目的を果たしますが、代わりに決定論的で信頼できるアルゴリズムを使用して構築されるため、一貫したビルドにつながります。

npmでプロジェクトを開始した場合、実際にYarnに移行できます簡単に。糸は同じpackage.jsonを消費します。詳細については、 npmからの移行 を参照してください。

ただし、npmは新しいリリースごとに改善されており、一部のプロジェクトでは引き続きnpmyarn.

0
Mathieu Gemard