糸とNPMの違いは何ですか?この質問を書いているとき、私はインターネットでいくつかの記事を見つけることができるだけです。この。
それらは同じ機能を持っていますか(Yarnはローカルキャッシュを実行し、パッケージを1回ダウンロードするだけでよいように見えます)が、これ以外にNPMからYarnに移行することの利点はありますか?
糸とNPMの違いは何ですか?この質問を書いているとき、私はインターネットでいくつかの記事を見つけることができるだけです。この。
それらは同じ機能を持っていますか(Yarnはローカルキャッシュを実行し、パッケージを1回ダウンロードするだけでよいように見えます)が、これ以外にNPMからYarnに移行することの利点はありますか?
回答:
バージョン5以降 npm
package-lock.json
ヤーン(または他の)ロックメカニズムが行うのと同じ方法で依存関係ツリー全体を修正するロックファイルし、--save
今の意味 npm i
さらに導入NPM 5.7.0npm ci
パッケージのみをインストールすることで、継続的インテグレーション環境でより迅速に依存関係をインストールするためのコマンドがで見つかったpackage-lock.json
(場合はエラーを報告package-lock.json
し、がpackage.json
同期していません)。
個人的にはまだ使っていますnpm
。
私はドキュメントから直接引用するのが嫌いですが、彼らは理由を説明するのに素晴らしい仕事をしています。
主に:
すべての開発マシンで同じものが得られることを常に知っています
npm
しない操作を並列化し、
ネットワークをより効率的に使用できます。
他のシステムリソース(RAMなど)もより効率的に使用できます。
それを使った人々の制作経験は何ですか?誰もが知っている、それは一般大衆にとって乳児です。
最初から、Yarnロックファイルは、同じリポジトリで繰返し実行されるyarnが同じパッケージになることを保証します。
次に、Yarnは、コールドキャッシュを使用して、特にウォームキャッシュを使用して、良好なパフォーマンスを実現しようとします。
最後に、Yarnはセキュリティをコアバリューにします。
“ NPM vs Yarn Cheat Sheet ” by Gant Laborde
高速:Yarnはダウンロードするすべてのパッケージをキャッシュするため、二度と必要ありません。また、操作を並列化してリソースの使用率を最大化するため、インストール時間がこれまでになく速くなります。
信頼性:詳細な、しかし簡潔なロックファイル形式、およびインストール用の確定的アルゴリズムを使用して、Yarnは1つのシステムで機能したインストールが他のシステムでもまったく同じように機能することを保証できます。
安全:Yarnはチェックサムを使用して、コードが実行される前に、インストールされているすべてのパッケージの整合性を検証します。
- オフラインモード:以前にパッケージをインストールしたことがある場合は、インターネットに接続せずにパッケージを再インストールできます。
- 確定的:インストールの順序に関係なく、すべてのマシンに同じ依存関係が同じ方法でインストールされます。
- ネットワークパフォーマンス:Yarnはリクエストを効率的にキューに入れ、リクエストのウォーターフォールを回避して、ネットワークの使用率を最大化します。
- 複数のレジストリ:npmまたはBowerからパッケージをインストールし、パッケージワークフローを同じに保ちます。
- ネットワークの回復力:単一の要求が失敗しても、インストールは失敗しません。リクエストは失敗時に再試行されます。
- フラットモード:依存関係の不一致バージョンを単一バージョンに解決して、重複の作成を回避します。
- より多くの絵文字。🐈
--flat
を強制するオプションがあることを理解していますが、これに対するデフォルトの動作は何ですか?ありがとう。
install -g
。
npm:
糸:
pnpm
ハードリンクとシンボリックリンクを使用して、モジュールの1つのバージョンをディスクに一度だけ保存します。たとえばnpmまたはYarnを使用する場合、同じバージョンのlodashを使用するプロジェクトが100ある場合、ディスクにはlodashのコピーが100あります。pnpmを使用すると、lodashはディスク上の1か所に保存され、ハードリンクはそれをインストールする必要があるnode_modulesに配置します。
その結果、ディスク上のギガバイトのスペースを節約し、インストールを大幅に高速化できます。pnpmが作成する一意のnode_modules構造と、Node.jsエコシステムで正常に動作する理由の詳細については、この小さな記事を読んでください。なぜpnpmを使用する必要があるのですか?
npm install -g pnpm
pnpm install -g typescript // or your desired package
PNPM
を超えるYarn
と、NPM
これはNPM
、インストール時間を示す進行状況バーでYARN
あり、PNPM
(バーは短いほど優れています)
Yarnを使用して(yarn add packagenameを使用して)パッケージをインストールすると、パッケージがディスクに配置されます。次回のインストール時に、レジストリからtarballを取得するためのHTTPリクエストを送信する代わりに、このパッケージが使用されます。
糸は便利なライセンスチェッカーが付属していますいます。これは、依存するすべてのモジュールのライセンスをチェックする必要がある場合に、非常に強力なものになります。
プロプライエタリソフトウェアを使用している場合は、どちらを使用しても問題はありません。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):糸より速く、より安全に、そしてより確実にするJavaScriptのマネージャーをパッケージ化。
次のように入力して、プロジェクトに糸を追加できます。
yarn init
これによりpackage.json
ファイルが作成されます。次に、依存関係を次のようにインストールします。
yarn install
フォルダnode_modules
が生成されます。Yarnはと呼ばれるファイルも生成しますyarn.lock
。このファイルはと同じ目的を果たしますが、package-lock.json
代わりに確定的で信頼性の高いアルゴリズムを使用して構築されるため、一貫性のあるビルドにつながります。
npmでプロジェクトを開始した場合、実際にはYarnに簡単に移行できます。糸は同じを消費しpackage.json
ます。詳細については、npmからの移行を参照してください。
ただし、npmは新しいリリースごとに改善されており、一部のプロジェクトでは、yarnよりもnpmを使用しています。
@msanfordの回答はほぼすべてをカバーしていますが、セキュリティ(OWASPの既知の脆弱性)の部分が欠けています。
糸
を使用してチェックできyarn audit
ますが、修正することはできません。これは、GitHub(https://github.com/yarnpkg/yarn/issues/7075)で未解決の問題です。
npm
を使用できるnpm audit fix
ので、一部は自分で修正できます。
二人とも、すなわちnpm audit
&yarn audit
自分自身の継続的インテグレーションツールを持っています。これらはそれぞれhttps://github.com/IBM/audit-ci(使用済み、問題なく動作します)とhttps://yarnpkg.com/package/audit-ci(未使用)です。