Yarn とNPMの違いは何ですか?この質問を書いている時点では、 this のようなNPMコマンドに相当するYarnが何であるかを示すインターネット上の記事をいくつか見つけることができます。
彼らは同じ機能を持っていますか(Yarnはローカルキャッシングを行い、パッケージを1回ダウンロードするだけでいいように見えます)が、これ以外にNPMからYarnに移行する利点はありますか?
バージョン5以降、npm
package-lock.json
と呼ばれる 'lockfile'を生成します。これは、糸(または他の)ロックメカニズムと同じように、依存関係ツリー全体を修正します。--save
がnpm i
に暗黙的に含まれるようになりましたnpm 5.7.0がさらに導入されましたnpm ci
で見つかったパッケージのみをインストールすることにより、継続的な統合環境で依存関係をより迅速にインストールするpackage-lock.json
コマンド(package-lock.json
とpackage.json
は同期されません)。
個人的に、私はまだnpm
を使用しています。
私はドキュメントから直接引用することを嫌いますが、彼らは理由を説明する素晴らしい仕事をします、それをさらに要約する方法がわかりませんアイデア。
主に:
すべての開発マシンで同じものを取得していることを常に知っている
npm
が実行しない操作を並列化し、
ネットワークをより効率的に使用できます。
より効率的になる可能性があります 他のシステムリソース(RAMなど)の使用 も同様です。
人々の制作経験はどうですか?誰が知っているか、それは一般大衆にとって幼児です。
Get-goから、Yarnロックファイルは、同じリポジトリでyarnを繰り返し実行すると同じパッケージになることを保証します。
次に、Yarnはコールドキャッシュを使用して、特にウォームキャッシュを使用して、良好なパフォーマンスを得ようとします。
最後に、Yarnはセキュリティをコアバリューにします。
「 NPM vs糸チートシート 」ガント・ラボデ
高速:Yarnはダウンロードしたすべてのパッケージをキャッシュするので、再び必要になることはありません。また、リソースの使用率を最大化するために操作を並列化するため、インストール時間が従来よりも高速になります。
信頼性:詳細でありながら簡潔なロックファイル形式とインストールの決定論的アルゴリズムを使用して、Yarnは1つのシステムで動作するインストールが他のシステムでもまったく同じように動作することを保証できます。
安全:Yarnは、コードが実行される前に、チェックサムを使用して、インストールされているすべてのパッケージの整合性を検証します。
- オフラインモード:以前にパッケージをインストールしたことがある場合は、インターネットに接続せずに再度インストールできます。
- 決定的:インストール順序に関係なく、すべてのマシンに同じ依存関係がまったく同じ方法でインストールされます。
- ネットワークパフォーマンス:ヤーンはリクエストを効率的にキューに入れ、ネットワークの使用率を最大化するためにリクエストのウォーターフォールを回避します。
- 複数のレジストリ:npmまたはBowerからパッケージをインストールし、パッケージワークフローを同じにします。
- ネットワークの復元力:単一の要求が失敗しても、インストールは失敗しません。リクエストは失敗時に再試行されます。
- フラットモード:依存関係の不一致バージョンを単一バージョンに解決して、重複の作成を回避します。
- より多くの絵文字。 ????
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
プログレスバーは、NPM
、YARN
、およびPNPM
(短いバーの方が優れています)でかかったインストール時間を示しています。
詳細については、 https://www.npmjs.com/package/pnpm をご覧ください。
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/
初心者のためにより良い概要を提供しようとしています。
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.