[解決済み] なぜyarnをインストールするのにnpmを使わないのですか?
質問
で
yarn (代替の npm クライアント) を発表したブログ記事
を実行するのが最も簡単な方法です。
npm install -g yarn
を実行することです。しかし、もしあなたが
のページを参照してください。
にアクセスすると、プラットフォーム別のインストール ページには "npm install yarn" はリストされておらず、"Alternatives" ページでは 3 つのオプションのうちの 3 番目としてのみ提供されています。さらに
npm install
yarn を実行すると、非推奨の警告が表示されます、 "It is recommended to install the native installation method for your environment." そこで私の疑問は、もし
npm install
が最も簡単なインストール方法であるなら、なぜそれが彼らのドキュメントで推奨されていないのでしょうか?また、Yarnを
npm
?
どのように解決するのですか?
編集 (2020/11/23)しました。
コメントでYarnのアドバイスの更新情報を提供してくれた@Kissakiに感謝します。
Yarn 2.x では、Yarn チームは彼らのアドバイスを変更し、現在は npm を介してツールをインストールすることを推奨しています。このアドバイスは、プロジェクトごとに使用する Yarn のバージョンをロックすることの利点を中心に述べています。これにより、プロジェクトはYarnのバージョン間の変動に対して弾力的になることができます。
新しい Yarn から インストールページ :
<ブロッククオートシステム全体で単一のパッケージマネージャを使用することは、常に問題でした。 問題でした。安定させるために、インストールは環境間で同じパッケージマネージャのバージョンで実行される必要があります。 そうでなければ、バージョン間で偶発的な破壊的変更を引き起こす危険性があります。 そうでなければ、バージョン間の偶発的な破壊的変更を引き起こす危険があります。 ロックファイルという概念が最初に導入されたのはそのためです。 そして、Yarnはある意味、あなたの最初のプロジェクトの依存関係です。 そして、Yarn はある意味であなたの最初のプロジェクトの依存関係であるため、それをロックすることは理にかなっているはずです。
この理由から、Yarn 2 以降はプロジェクト単位で管理されることを意図しています。 プロジェクト単位で管理されることを意図しています。
これは、プロジェクト単位でビルドツールのバージョンをロックする他の方法と似ています。以下を参照してください。 Gradle ラッパー をご覧ください。
Yarnのスタンドアローンインストールの利点は、特にYarnチームの方向転換により、かなり早く崩れ去りました。npm 経由でのインストールが推奨されるようになり、Yarn 2.x ではスタンドアロン インストールのための説明はもはや彼らのサイトでは提供されていないようです。
オリジナルの回答です。
Yarnプロジェクトのメンテナによると、npm経由でYarnをインストールすると はプロジェクトの目標に反しています。 でインストールすることは、プロジェクトの目標に反し、問題を引き起こす可能性があり、一般的に、プラットフォーム固有のインストール方法よりも悪いとされています。
推奨されるプラットフォーム固有のインストールに対する利点。
-
Yarn チームは npm を安全でない、信頼できないものとみなしています。Yarn の
セクションから のページの "インストール" セクションを参照してください。 :
注意してください。 npmによるYarnのインストールは一般的に推奨されません。npmによるYarnのインストールは非決定的で、パッケージは署名されておらず、実行される整合性チェックは基本的なSHA1ハッシュのみであり、システム全体のアプリをインストールする際のセキュリティリスクとなる。
これらの理由から、オペレーティングシステムに最も適したインストール方法でYarnをインストールすることが強く推奨されます。
- npm を介して別のパッケージマネージャーユーティリティである Yarn を実行すると、エッジケースの問題が発生することがあります (詳細は 問題 2072 )
- システムパッケージマネージャー経由のインストールは、Yarn を npm から切り離し、npm なしで Yarn を実行できるようにします。
- システムパッケージマネージャーは通常定期的に実行され、Yarnを更新し続ける。
- npm 経由での Yarn のインストールは 遅い
へのメリット
npm install -g yarn
:
-
クイック&イージー (
npm install -g yarn
) - どのようなnpm環境でも可能(プラットフォーム非依存型)
- Node.js開発者にとって馴染み深いパラダイムとプロセス
-
簡単にアップデートできる (
npm update -g yarn
)-
Yarn の更新コマンドが存在する (
yarn self-update
となっているようですが が壊れました。
-
Yarn の更新コマンドが存在する (
- システムのパッケージ・マネージャに依存しない
-
プロジェクトごとに異なるバージョンの Yarn を使用したり、異なるバージョンの Node.js を使用することができます。
nvm
Windows には公式のパッケージ マネージャーがないため (Windows Update を除いて)、システム パッケージ マネージャーによるインストール推奨の論拠は崩れがちです。また、Chocolatey のような Windows パッケージ マネージャーは、しばしば自動更新を行うように設定されていません。
私は、これに関する Yarn チームの決定に完全に同意するわけではありませんが、いくつかの公正なポイントを指摘しています。Yarn プロジェクトはまだ若く、もし npm の代替となるのであれば、主要なインストーラーとして npm を推奨するのは意味がないでしょう。
とはいえ、ほとんどの場合、npm を介したインストールは今のところうまくいっているようです。
ソースはこちらです。
関連
-
[解決済み】npm 5で作成されたpackage-lock.jsonファイルはコミットするのでしょうか?
-
[解決済み】AWS lambda function エラー - モジュール 'index' をインポートできません。エラー
-
[解決済み] npm installの-saveオプションは何ですか?
-
[解決済み] インストールされているnpmパッケージのバージョンを検索する
-
[解決済み] npm package.jsonファイルのdependencies, devDependencies, peerDependenciesの違いは何ですか?
-
[解決済み] Node.jsのnpmモジュールをアンインストールするにはどうすればよいですか?
-
[解決済み] npmはどこにパッケージをインストールするのですか?
-
[解決済み] NPMパッケージの以前の正確なバージョンをインストールするにはどうすればよいですか?
-
[解決済み] GitHubからnpmパッケージを直接インストールする方法
-
[解決済み] なぜ "npm install" は package-lock.json を書き換えてしまうのですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Node.js getaddrinfo ENOTFOUND
-
[解決済み] テスト
-
[解決済み】Express.js req.bodyが未定義です。
-
[解決済み】ブロックスコープの宣言は、ストリクトモード以外ではまだサポートされていません。
-
[解決済み] Node.jsのホスト名/IPが証明書のaltnamesと一致しない
-
[解決済み] Passport JSのreq.isAuthenticated()はどのように実装されていますか?[クローズド]
-
[解決済み] joiライブラリを使用して2つの時間を比較する方法
-
[解決済み] Macでポート3000をロックしているプロセスを見つける(そして殺す)【終了
-
[解決済み] "app.use(express.cookieSession())" に "secret" オプションが必要です。
-
[解決済み] Mongoose Schema がモデルとして登録されていません。