Yarnのクラシック版とBerry(v2以降)の違いと注意点

JavaScriptパッケージマネージャ「Yarn」には、大きく分けて「クラシック版(v1)」と「Berry(v2以降)」があります。特にYarn v1からv2以降に移行する場合は、多くの仕様変更があり、注意が必要です。本記事では、両者の主な違いや導入時の注意点を解説します。

Yarn Classic(v1)の特徴

Yarnのクラシック版(v1系)は、npmよりも高速かつ安定したパッケージ管理を目指して登場しました。

主な特徴は以下の通りです:

  • node_modules フォルダを使用
  • .yarnrc による設定
  • ワークスペース機能のサポート
  • yarn.lock による依存関係のロック

導入方法:

npm install -g yarn

またはプロジェクトディレクトリで:

yarn init

Yarn Berry(v2以降)の特徴

Yarn v2以降は「Berry」とも呼ばれ、根本的なアーキテクチャの見直しが行われています。

大きな変更点:

  • node_modules を使用しない(Plug’n’Play=PnP がデフォルト)
  • 設定ファイルが .yarnrc.yml に変更
  • Yarn自身もリポジトリ内で管理される(Zero-Install推奨)
  • プラグインシステムの導入
  • より高速な依存解決

初期化コマンド(クラシック→Berryへ移行):

yarn set version berry

その後、.yarn/releases/yarn-berry.cjs.yarnrc.yml が生成されます。


両者の違いの比較表

項目Yarn Classic (v1)Yarn Berry (v2〜)
node_modules使用する使用しない(PnP)
設定ファイル.yarnrc.yarnrc.yml
Yarn本体の管理グローバルプロジェクト内
プラグイン機構なしあり
キャッシュグローバルプロジェクト内 .yarn/cache/

注意点と落とし穴

1. node_modules 前提のツールが動かないことがある

Yarn BerryのPnPでは node_modules が存在しないため、ツールによってはパス解決に失敗することがあります。

対策:
必要であれば nodeLinker: node-modules.yarnrc.yml に追加することで対応可能。

nodeLinker: node-modules

2. プラグインの導入が必要なケースがある

Yarn Berryでは多くの機能がプラグインに分割されています。たとえば workspace-toolsinteractive-tools などを必要に応じて追加する必要があります。

yarn plugin import workspace-tools

3. CI環境ではZero-Install構成が推奨される

Yarn v2以降では .yarn/cache/ に全依存パッケージを保管する方式(Zero-Install)が推奨され、yarn install をCIで実行しなくても済む構成が可能になります。


4. .pnp.js の仕組みに慣れる必要がある

PnPではモジュール解決のロジックが .pnp.cjs に記録され、Node.js にパッチを当てて解決します。初見では戸惑うかもしれませんが、公式ドキュメントが充実しています。


まとめ:Yarnのバージョンはプロジェクトの性質で選ぼう

Yarn v1は依然として多くの現場で使われており、互換性を重視するならクラシック版が無難です。一方、パフォーマンスやCI/CDの最適化を狙うならYarn Berryが強力な選択肢になります。

結論として:

  • 既存のプロジェクトやレガシー環境:Yarn v1(Classic)を継続
  • モノレポ・CI高速化・最新構成:Yarn Berry(v2以降)を選択

それぞれの特性を理解し、目的に応じて適切なバージョンを選びましょう。

Contact

ウェブサイトの制作や運用に関わる
お悩みやご相談
お気軽にお問い合わせ下さい

ウェブサイトと一口に言っても、企業サイトやECサイト、ブログ、SNSなど、その“カタチ”は目的に応じてさまざまであり、構築方法や使用する技術も大きく異なります。株式会社コナックスでは、お客様のご要望やブランドの個性を丁寧に汲み取り、最適なウェブサイトの“カタチ”をご提案いたします。

デザイン、ユーザビリティ、SEO対策はもちろん、コンテンツ制作やマーケティング戦略に至るまで、あらゆるフェーズでお客様のビジネスに寄り添い、成果につながるウェブサイトづくりをサポートいたします。私たちは、ウェブサイトの公開をゴールではなくスタートと捉え、お客様のビジネスの成功に向けて共に伴走してまいります。