[解決済み] NPMよりYarnを使うべき時とは?その違いとは?
質問
とはどのような違いがあるのでしょうか? 糸 と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.json
と
package.json
は同期していない)。
個人的に
を使用しています。
npm
.
オリジナル
ドキュメントから直接引用するのは嫌なのですが、このドキュメントには 素晴らしい その理由を簡潔に説明してくれているので、これ以上考えをまとめることはできないと思います。
大きくは。
-
どの開発現場でも、常に同じものを手に入れることができるのです。 マシン
-
という操作をパラレル化します。
npm
にはないものであり -
ネットワークをより効率的に利用することができます。
-
より効率的になる可能性があります。 他のシステムリソース(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回のリクエストが失敗しても、インストールが失敗することはありません。リクエストは失敗しても再試行されます。
- フラットモード。依存関係のバージョンの不一致を単一のバージョンに解決し、重複を回避します。
- 絵文字を増やしました。????
関連
-
[解決済み】npm 5で作成されたpackage-lock.jsonファイルはコミットするのでしょうか?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] npm installの-saveオプションは何ですか?
-
[解決済み] インストールされているnpmパッケージのバージョンを検索する
-
[解決済み] npm package.jsonファイルのdependencies, devDependencies, peerDependenciesの違いは何ですか?
-
[解決済み] Bowerとnpmの違いは何ですか?
-
[解決済み】JavaScript版sleep()とは?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Vueがechartsのtooltipにクリックイベントを追加するケーススタディ
-
vue3.0プロジェクトのアーキテクチャを構築するための便利なツール
-
JavaScriptの配列共通メソッド解説
-
vueの補間表現とv-textディレクティブの違いについて
-
[解決済み】TypeErrorの解決方法。未定義またはヌルをオブジェクトに変換できない
-
[解決済み】TypeScript-のAngular Frameworkエラー - "exportAsがngFormに設定されたディレクティブはありません"
-
[解決済み】ReactJSでエラー発生 Uncaught TypeError: Super expression は null か関数でなければならず、undefined ではありません。
-
[解決済み】「.addEventListener is not a function」なぜこのエラーが発生するのか?
-
フロントエンド非同期(アシンク)ソリューション(全ソリューション)
-
フロントエンド null のプロパティ 'disabled' を読み取れない 問題が解決された