【やーん】

Yarn とは?

💡 npmを「もっと速く、もっと安全に」を目指して生まれたパッケージ管理ツール
📌 このページのポイント
npm vs Yarn 比較 npm npm install パッケージ名 package-lock.json node_modules/(大量ファイル) 順次インストール Node.js標準搭載 vs Yarn yarn add パッケージ名 yarn.lock PnP対応(node_modules不要) 並列インストール(高速) Meta(Facebook)開発 共通: npmレジストリのパッケージを利用 / package.jsonで管理
npmとYarnの機能比較
ひよこ ひよこ

Yarnってnpmがあるのになんでわざわざ作られたの?

ペンギン先生 ペンギン先生

2016年頃のnpmは遅くて不安定だったんだ。Facebook、GoogleTiltの開発者が「もっと速くて確実なパッケージマネージャーが欲しい」と思って作ったのがYarnだよ。npmの弱点を補うために生まれた存在なんだ。

ひよこ ひよこ

具体的にnpmより何が良いの?

ペンギン先生 ペンギン先生

主に3つ。まず「速さ」で、パッケージを並列ダウンロードしてキャッシュも賢く使う。次に「安全性」で、yarn.lockファイルでバージョンを厳密に固定する。最後に「確実性」で、チーム全員が同じバージョンのパッケージを使えることを保証するんだ。

ひよこ ひよこ

今でもnpmより速いの?

ペンギン先生 ペンギン先生

実は最近のnpmもかなり改善されて、速度差はほとんどなくなったよ。npm側もpackage-lock.jsonを導入してバージョン固定に対応した。Yarnの登場がnpmの進化を促したとも言えるね。競争って大事だよ。

ひよこ ひよこ

Yarn Berryって何が違うの?

ペンギン先生 ペンギン先生

Yarn v2以降はYarn Berryと呼ばれていて、Plug'n'Play(PnP)という仕組みでnode_modulesフォルダを不要にしたんだ。依存関係を.pnp.cjsファイルで管理することで、ディスク容量の節約とインストール速度の大幅向上を実現しているよ。ただし一部のツールとの互換性問題があって、まだ普及途上だね。

ひよこ ひよこ

結局どっちを使えばいいの?

ペンギン先生 ペンギン先生

正直、今はどちらでも大差ないよ。チームで統一されていればOK。ただし最近はpnpmという第三の選択肢も人気で、ハードリンクを使ってディスク容量を大幅に節約できるんだ。npm、Yarn、pnpmの三つ巴で、パッケージマネージャー界は群雄割拠だよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Yarn」って出てきたら「npmの代わりに使えるJavaScriptの高速パッケージ管理ツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Yet Another Resource Negotiator」 = さらにもう一つのリソース交渉者
💬 「Yet Another(さらにもう一つの)」はIT業界でよく使われる命名パターンで、「npm以外のもう一つの選択肢」という意味が込められているよ。Yarnは「毛糸」の意味もあって、依存関係を糸で紡ぐイメージもあるよ
← 用語集にもどる