Skip to content
Latchkey

Yarnとは?JavaScriptのパッケージマネージャーを解説

YarnはJavaScriptのパッケージマネージャーで、lockfileを広めたツールです。高速で決定論的なインストールと、第一級のmonorepo workspaceを提供します。

Yarnは、速度と決定性に関する初期のnpmの悩みを解決するために作られ、今ではどこでも標準となっているlockfileの概念を導入しました。npmと同じpackage.jsonを読み、2つの主要な系統があります。オリジナルの「Classic」(1.x) と、書き直された「Berry」(2.x以降) です。

Yarnとは

YarnはNode.jsプロジェクト向けのコマンドラインパッケージマネージャーです。package.jsonで宣言された依存関係を解決し、正確なバージョンをyarn.lockに記録し、1つのリポジトリで多数のパッケージを管理するworkspaceをサポートします。Yarn Classicは従来のnode_modulesを使い、BerryはデフォルトでPlug and Playを使います。

Classic対BerryとPlug and Play

Yarn Classic (1.x) はいまだに広く使われ、npmとほぼ同じように動作します。Yarn Berry (2以降) はPlug and Play (PnP) を導入し、node_modulesを完全に省いて単一の.pnp.cjsマップからモジュールを解決します。さらに、cacheをリポジトリにコミットするzero-installsもあります。PnPは高速でより厳格ですが、node_modulesの存在を前提とするツールで時々つまずくことがあります。

使用例

日常的なコマンドは短く、なじみのあるものです。

Common Yarn commands
# install exactly from the lockfile (use in CI)
yarn install --immutable

# add a dependency
yarn add axios

# run a script
yarn build

CI/CDでの役割

pipelineでは、「yarn install --immutable」(Berry) または「yarn install --frozen-lockfile」(Classic) がlockfileの遵守を保証し、変更されるようならfailします。Yarnのcacheディレクトリをcacheすると、繰り返しのインストールが高速化されます。Berryのzero-installsでは、依存関係のcacheがリポジトリ内にあるため、CIはインストールのネットワークステップを完全にスキップできます。

代替ツール

npmはデフォルトで追加インストールが不要です。pnpmは共有storeにより最高のディスク効率とインストール速度を提供します。Yarnは、成熟したworkspace、PnPの厳格さ、あるいはzero-installワークフローを重視するチームにとって、依然として有力な選択肢です。

重要なポイント

  • Yarnはlockfileを広め、決定論的で高速なインストールを提供します。
  • BerryはPlug and Playとzero-installsを追加し、Classicはnode_modulesベースのままです。
  • CIでは「yarn install --immutable」を使ってlockfileを強制します。

関連ガイド