【やーん】

Yarn とは?

最終更新:
💡 ライブラリの準備と、依存関係の管理を手伝う道具

JavaScriptの開発で使うパッケージ管理ツール。必要なライブラリや依存関係を管理する。yarn.lockで解決したバージョンを記録し、Modern版ではPlug’n’Playやnode_modulesなど、プロジェクトに合うインストール方式を選べる。

📌 このページのポイント
Yarn:ライブラリの準備を管理するpackage.json必要なパッケージyarn.lock解決したバージョンyarn installPlug’n’Play.pnp.cjsを使うnode_modules必要なら選べる使うYarnの世代と、設定をそろえよう
Modern版の代表的なインストール方式。既定はPlug’n’Playですが、プロジェクトの設定やツールへの対応で方式を選べます。
ひよこ ひよこ
Yarnは、何をしてくれるの?
ペンギン先生 ペンギン先生
アプリが使うライブラリを追加したり、必要な依存関係をインストールしたりするよ。package.jsonに必要なパッケージなどを記載し、yarn installで準備するんだ。
ひよこ ひよこ
yarn.lockは、何のためにある?
ペンギン先生 ペンギン先生
解決したパッケージのバージョンなどを記録するファイルだよ。チームで共有すれば同じ依存関係を使いやすくなる。ただし、OSや実行環境の違いまでなくすものではないんだ。
ひよこ ひよこ
ClassicとModernは、違うもの?
ペンギン先生 ペンギン先生
同じYarnの世代の違いだよ。Classicは1.x、Modernは2以降。設定ファイルやインストール方式が違うので、古い説明をそのまま使わず、プロジェクトのバージョンを確認しよう。
ひよこ ひよこ
node_modulesが、なくても動くの?
ペンギン先生 ペンギン先生
Modern版の既定のPlug’n’Playは、.pnp.cjsというローダーで依存関係の場所を管理するよ。必要ならnode_modules方式も選べる。ツールによって対応状況やエディターの設定が違うんだ。
ひよこ ひよこ
npmより、いつも速いの?
ペンギン先生 ペンギン先生
一律には言えないよ。使う機能、キャッシュ、環境などで変わる。チームの既存設定やツールとの互換性を見て選ぼう。Yarnでも、バージョンの固定だけでパッケージの安全性が保証されるわけではないね。
もっと詳しく知りたい人へ

CIで、yarn.lockが勝手に書き換わるのを防ぐには?

Modern版のyarn install --immutableは、インストールに伴ってロックファイルの変更が必要ならエラーにします。公式資料ではCIで既定の動作です。ロックファイルを共有し、使うYarnのバージョンもそろえましょう。これはOSや外部サービスを含む環境全体の同一性を保証するオプションではありません。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Yarn」って出てきたら「JavaScriptのライブラリをそろえて管理する道具」と思えばだいたいOK!
📖 おまけ:英語の意味
「Yarn」 = JavaScriptのパッケージ管理ツールの名前
💬 このページはJavaScriptのYarnを扱うよ。Apache Hadoopのリソース管理システムYARNとは別のツールなんだ。

参考資料

← 用語集にもどる