web-dev-qa-db-ja.com

なぜnpmを使用してyarnをインストールしないのですか?

Yarn(別のnpmクライアント)を発表するブログ投稿 では、「始めるための最も簡単な方法はnpm install -g yarnを実行すること」です。しかし、 ドキュメントの「インストールヤーン」ページ にアクセスすると、「npm install yarn」はプラットフォーム固有のインストールページのいずれにもリストされず、3番目の3番目としてのみ提供されます。 「代替」ページのオプション。さらに、npm install yarnを使用すると、「環境にネイティブインストール方法を使用してYarnをインストールすることをお勧めします」という非推奨の警告が出力されます。私の質問は、npm installが最も簡単なインストール方法である場合、なぜドキュメントで推奨される方法ではないのですか? npmを使用して糸をインストールすることには欠点がありますか?

58
chrisarnesen

Yarnプロジェクトのメンテナーによると、npm プロジェクトの目標に反する を介してYarnをインストールすると、問題が発生する可能性があり、一般に、プラットフォーム固有のインストール方法よりも悪いです。


推奨されるプラットフォーム固有のインストールの利点:

  • Yarnチームは、npmを安全でなく信頼性の低いものと見なしています。 Yarnの「npm経由でインストール」セクションから 「インストール」ページ

    注:通常、npmを介したYarnのインストールは推奨されません。 npmでのYarnのインストールは非決定的で、パッケージは署名されず、実行される整合性チェックは基本的なSHA1ハッシュのみです。これは、システム全体のアプリをインストールする際のセキュリティリスクです。

    これらの理由により、オペレーティングシステムに最適なインストール方法でYarnをインストールすることを強くお勧めします。

  • 別のパッケージマネージャーユーティリティであるYarnをnpm経由で実行すると、エッジケースの問題が発生する可能性があります( issue 2072 を参照)

  • システムパッケージマネージャーを介してインストールすると、Yarnがnpmから分離されるため、npmなしでYarnを実行できます。
  • 通常、システムパッケージマネージャーは定期的に実行され、Yarnを最新の状態に保ちます
  • Npmを介したYarnのインストールは slow です

npm install -g yarnの利点:

  • すばやく簡単(npm install -g yarn
  • 任意のnpm環境で実行できます(プラットフォームに依存しない)
  • Node.js開発者向けの使い慣れたパラダイムとプロセス
  • 簡単に更新できます(npm update -g yarn
    • 糸の更新コマンドは存在しますが(yarn self-update)、それは 壊れた のようです
  • システムパッケージマネージャーに依存しない
  • nvmを介して、異なるプロジェクトまたは異なるバージョンのNode.jsに異なるバージョンのYarnを使用できます。

推奨されるインストールのシステムパッケージマネージャーの引数は、公式のパッケージマネージャーが存在しないWindowsを参照するときに壊れる傾向があります(Windows Updateをカウントしない限り)。また、ChocolateyなどのWindowsパッケージマネージャーは、多くの場合、自動更新用に構成されていません。

私はこれに関するYarnチームの決定に完全に同意するかどうかはわかりませんが、彼らはいくつかの公正な点を指摘しています。 Yarnプロジェクトはまだ若く、npmの代わりになる場合、npmを主要インストーラーとして推奨することは意味がありません。

とにかく、ほとんどの場合、npmを介したインストールは今のところうまくいくようです。


ソース:

63
Mike Hill

npmを介してYarnをインストールしても、目に見える不利な点はありません。実際、私はいくつかの理由でこの方法を自分で選びました。

  1. これが最も簡単な方法です。 npm i --global yarnそして、すぐにコンソールでnpmyarnに文字通り置き換えることができます。
  2. nvmを使用しており、各NodeJSバージョンで異なるコードプロジェクトを維持している場合、一方のバージョンにYarnをインストールし、もう一方のバージョンにはインストールしないでください。
  3. 正直なところ、プラットフォーム固有のインストールで言及されていないと思うことができる唯一の理由は、npmがプラットフォームに依存しないことです
18
nikjohn

npmはプラットフォーム固有ではなく、ほぼすべてのシステムで実行されるため、代替としてリストされています。プラットフォーム固有のインストールと比べて利点も欠点もありません。違いはインストール場所ですが、すべてのメソッドはグローバルyarnコマンドをCLIに公開します。

ほとんどの人はすでにnpmに精通しているので、彼らはそれを「最も簡単な方法」としてリストしたと主張します。

7
Mario Tacke