Yarn コマンド チートシート:add/up/dedup/dlx/workspaces 早見表

JavaScript や TypeScript のプロジェクト開発において、Yarn は高速で信頼性の高いパッケージマネージャーとして広く使われています。しかし、コマンドやオプションが豊富で「どのコマンドをどう使えばいいのか」迷ってしまうこともあるでしょう。
本記事では、Yarn の中でも特に使用頻度が高い add
、up
、dedupe
、dlx
、workspaces
の 5 つのコマンドに焦点を当てて、早見表形式で整理します。実務ですぐに使える具体例とともに解説しますので、開発効率を高めるヒントとしてお役立てください。
コマンド早見表
# | コマンド | 主な用途 | 代表的なオプション | 使用例 |
---|---|---|---|---|
1 | yarn add | パッケージのインストール | -D (開発依存)、-E (完全一致バージョン) | yarn add react |
2 | yarn up | パッケージの更新 | -i (対話モード)、-C (範囲指定) | yarn up react |
3 | yarn dedupe | 重複パッケージの削除 | -s (戦略指定)、--check (確認のみ) | yarn dedupe |
4 | yarn dlx | 一時的なパッケージ実行 | -p (パッケージ追加指定)、-q (静穏モード) | yarn dlx create-react-app my-app |
5 | yarn workspaces | モノレポ管理 | foreach (一括実行)、--all (全ワークスペース) | yarn workspaces foreach run build |
オプション詳細早見表
yarn add オプション
# | オプション | 効果 | 使用例 |
---|---|---|---|
1 | -D , --dev | devDependencies に追加 | yarn add -D typescript |
2 | -P , --peer | peerDependencies に追加 | yarn add -P react |
3 | -O , --optional | optionalDependencies に追加 | yarn add -O fsevents |
4 | -E , --exact | 完全一致バージョンで固定 | yarn add -E react@18.2.0 |
5 | -T , --tilde | マイナーバージョン範囲で固定 | yarn add -T react |
6 | -C , --caret | メジャーバージョン範囲で固定 | yarn add -C react |
yarn up オプション
# | オプション | 効果 | 使用例 |
---|---|---|---|
1 | -i , --interactive | 対話的に更新対象を選択 | yarn up -i |
2 | -E , --exact | 完全一致バージョンに更新 | yarn up -E react |
3 | -T , --tilde | マイナーバージョン範囲に更新 | yarn up -T react |
4 | -C , --caret | メジャーバージョン範囲に更新 | yarn up -C react |
yarn dedupe オプション
# | オプション | 効果 | 使用例 |
---|---|---|---|
1 | --check | 重複をチェックのみ(実行しない) | yarn dedupe --check |
2 | -s , --strategy | 重複解消の戦略を指定 | yarn dedupe -s highest |
3 | --mode | 更新モードを指定 | yarn dedupe --mode=update-lockfile |
yarn workspaces オプション
# | オプション | 効果 | 使用例 |
---|---|---|---|
1 | foreach | 各ワークスペースでコマンド実行 | yarn workspaces foreach run test |
2 | --all | すべてのワークスペース対象 | yarn workspaces foreach --all run build |
3 | --parallel | 並列実行 | yarn workspaces foreach --parallel run build |
4 | --topological | 依存順に実行 | yarn workspaces foreach --topological run build |
5 | --include | 特定ワークスペースのみ対象 | yarn workspaces foreach --include packages/* run test |
背景
パッケージ管理の重要性
モダンな Web 開発では、数多くの外部ライブラリやフレームワークを組み合わせてアプリケーションを構築します。これらの依存関係を適切に管理することは、プロジェクトの安定性や保守性に直結する重要な作業です。
Yarn は npm の代替として登場し、以下の特徴で支持を集めています。
- 高速なインストール: 並列処理とキャッシュ機構により、npm よりも高速
- 決定論的な依存解決:
yarn.lock
により、チーム全員が同じバージョンを使用 - モノレポ対応: Workspaces 機能により、複数パッケージの統合管理が可能
Yarn のバージョンと進化
Yarn には Classic(v1)と Berry(v2 以降)の 2 つの系統があります。本記事では Yarn Berry(v3・v4)を前提に解説しますが、多くのコマンドは v1 でも使用できます。
以下の図は、Yarn の進化とバージョンの関係を示しています。
mermaidflowchart LR
v1["Yarn Classic<br/>(v1.x)"] -->|進化| v2["Yarn Berry<br/>(v2.x)"]
v2 -->|改善| v3["Yarn 3.x<br/>(安定版)"]
v3 -->|最新| v4["Yarn 4.x<br/>(最新版)"]
v1 -.->|互換性あり| cmd["基本コマンド<br/>(add/install)"]
v2 -.->|新機能| adv["高度な機能<br/>(dlx/workspaces)"]
図で理解できる要点:
- Yarn は v1 から v4 へと進化し、機能が拡張されてきました
- 基本コマンドは互換性を保ちながら、新機能が追加されています
- v2 以降(Berry)で dlx や workspaces などの高度な機能が強化されました
課題
よくある Yarn 運用の悩み
開発現場では、以下のような課題に直面することがあります。
パッケージ追加時の迷い
新しいパッケージを追加する際、「どのオプションを使えばいいのか」「バージョン指定はどうすべきか」といった疑問が生じます。特に、開発依存なのか本番依存なのか、バージョン範囲はどう設定するかなど、判断に迷うポイントが多くあります。
更新作業の複雑さ
依存パッケージを更新する際、「安全に最新版に上げたい」「一部だけ更新したい」といったニーズに対して、適切なコマンドやオプションを選ぶ必要があります。
重複パッケージによる肥大化
プロジェクトが大きくなると、同じパッケージの異なるバージョンが複数インストールされ、node_modules
が肥大化することがあります。この重複を効率的に解消する方法が必要です。
一時的なツール実行の手間
プロジェクト初期化や一度きりのコード生成など、グローバルインストールせずにツールを実行したい場面があります。
モノレポ管理の難しさ
複数のパッケージを一つのリポジトリで管理するモノレポ構成では、各パッケージへの一括操作や依存関係の整理が課題になります。
以下の図は、これらの課題がプロジェクトのどの段階で発生するかを示しています。
mermaidflowchart TD
start["プロジェクト開始"] --> add_phase["パッケージ追加<br/>フェーズ"]
add_phase --> maintain["保守・運用<br/>フェーズ"]
maintain --> scale["スケール<br/>フェーズ"]
add_phase -.->|課題| q1["オプション選択<br/>の迷い"]
maintain -.->|課題| q2["更新・重複管理<br/>の複雑さ"]
scale -.->|課題| q3["モノレポ管理<br/>の難しさ"]
q1 --> solution["Yarn コマンド<br/>チートシート"]
q2 --> solution
q3 --> solution
図で理解できる要点:
- プロジェクトの各フェーズで異なる Yarn �� マンドが必要になります
- 課題は「追加」「保守」「スケール」の 3 段階に分類できます
- チートシートを活用することで、各フェーズの課題を解決できます
解決策
頻出コマンドの体系的理解
Yarn の主要コマンドを体系的に理解し、場面ごとに適切なコマンドとオプションを選択できるようにすることが解決策です。本記事では、以下の 5 つのコマンドを中心に解説します。
1. yarn add
- パッケージのインストール
新しい依存パッケージをプロジェクトに追加するコマンドです。開発依存、本番依存、バージョン固定など、目的に応じたオプションを選択できます。
2. yarn up
- パッケージの更新
既存のパッケージを最新版または指定バージョンに更新します。対話的な更新モードや、範囲指定による柔軟な更新が可能です。
3. yarn dedupe
- 重複パッケージの削除
同じパッケージの異なるバージョンが複数インストールされている場合、それらを統合して node_modules
のサイズを削減します。
4. yarn dlx
- 一時的なパッケージ実行
グローバルインストールせずに、npm パッケージを一時的にダウンロードして実行します。create-react-app
などのジェネレーターツールで便利です。
5. yarn workspaces
- モノレポ管理
複数のパッケージを一つのリポジトリで管理するモノレポ構成をサポートします。各ワークスペースへの一括コマンド実行や依存関係の最適化が行えます。
以下の図は、これらのコマンドが解決する課題と使用場面の関係を示しています。
mermaidflowchart TB
subgraph commands["Yarn コマンド"]
add["yarn add<br/>(追加)"]
up["yarn up<br/>(更新)"]
dedupe["yarn dedupe<br/>(最適化)"]
dlx["yarn dlx<br/>(一時実行)"]
workspaces["yarn workspaces<br/>(モノレポ)"]
end
subgraph scenarios["使用場面"]
install_new["新規パッケージ<br/>導入"]
update_deps["依存関係<br/>更新"]
optimize["サイズ<br/>最適化"]
temp_tool["ツール<br/>一時使用"]
monorepo["複数パッケージ<br/>管理"]
end
add --> install_new
up --> update_deps
dedupe --> optimize
dlx --> temp_tool
workspaces --> monorepo
図で理解できる要点:
- 各コマンドは特定の使用場面に最適化されています
- コマンドを使い分けることで、効率的なパッケージ管理が実現できます
- 場面に応じた適切なコマンド選択が重要です
オプションの使い分け方針
各コマンドには多様なオプションが用意されており、状況に応じて使い分けることで、より細やかな制御が可能になります。
バージョン固定オプション
-E
(完全一致)、-T
(チルダ範囲)、-C
(キャレット範囲)により、依存関係の更新範囲を制御します。安定性を重視する場合は -E
、セキュリティ更新を受け入れる場合は -C
を選択します。
依存関係タイプオプション
-D
(開発依存)、-P
(ピア依存)、-O
(オプショナル依存)により、パッケージの役割を明確化します。ビルドツールやテストライブラリは -D
、フレームワークの前提ライブラリは -P
を使用します。
実行モードオプション
-i
(対話モード)、--parallel
(並列実行)、--topological
(依存順実行)により、コマンドの実行方法を制御します。
具体例
yarn add - パッケージのインストール
yarn add
は新しいパッケージをプロジェクトに追加する最も基本的なコマンドです。ここでは、実務でよく使うパターンを紹介します。
基本的な使い方
最もシンプルな形は、パッケージ名だけを指定する方法です。
typescriptyarn add react
このコマンドを実行すると、以下の処理が行われます。
- React の最新安定版が
dependencies
に追加されます package.json
にパッケージ情報が記録されますyarn.lock
に決定論的なバージョン情報が記録されますnode_modules
にパッケージがインストールされます
開発依存として追加
TypeScript やテストライブラリなど、開発時のみ必要なパッケージは -D
オプションを使います。
typescriptyarn add -D typescript
開発依存パッケージは devDependencies
に記録され、本番ビルドには含まれません。これにより、本番環境のバンドルサイズを削減できます。
以下のパッケージは開発依存として追加するのが一般的です。
- TypeScript (
typescript
) - テストフレームワーク (
jest
,vitest
) - リンター (
eslint
,prettier
) - ビルドツール (
webpack
,vite
)
バージョンを完全固定
特定のバージョンで固定したい場合は -E
オプションを使用します。
typescriptyarn add -E react@18.2.0
package.json
には ^
や ~
などの範囲指定記号なしで、完全一致のバージョンが記録されます。
json{
"dependencies": {
"react": "18.2.0"
}
}
完全固定が有効な場面は以下の通りです。
- 本番環境での安定性重視: 予期しない更新を防ぐ
- 再現性の確保: CI/CD で常に同じバージョンを使用
- 既知の不具合回避: 特定バージョンの問題を避ける
複数パッケージの同時追加
スペース区切りで複数のパッケージを一度に追加できます。
typescriptyarn add react react-dom next
これにより、3 つのパッケージが一度にインストールされ、依存関係の解決も同時に行われます。プロジェクト初期化時に便利です。
Git リポジトリからのインストール
GitHub など Git リポジトリから直接インストールすることも可能です。
bashyarn add https://github.com/user/repo.git
また、特定のブランチやコミットを指定することもできます。
bashyarn add https://github.com/user/repo.git#branch-name
yarn add https://github.com/user/repo.git#commit-hash
このパターンは、公開前のパッケージや、フォークした独自版を使用する際に活用できます。
yarn up - パッケージの更新
yarn up
は既存のパッケージを更新するコマンドです。Yarn v2 以降で導入され、v1 の yarn upgrade
に相当します。
基本的な更新
特定のパッケージを最新版に更新します。
bashyarn up react
このコマンドは、package.json
で許可されている範囲内で最新版に更新します。例えば "react": "^18.0.0"
と記載されていれば、18.x.x の最新版に更新されます。
すべてのパッケージを更新
パッケージ名を省略すると、すべての依存関係が更新されます。
bashyarn up
ただし、メジャーバージョンアップは自動では行われません。package.json
の範囲指定に従った更新のみが実行されます。
対話的な更新
-i
オプションを使うと、対話的に更新対象を選択できます。
bashyarn up -i
実行すると、更新可能なパッケージの一覧が表示され、個別に選択できます。大規模プロジェクトで一部のパッケージのみ更新したい場合に便利です。
bash? Pick the packages you want to upgrade.
◯ react: 18.2.0 → 18.3.0
◉ typescript: 5.0.0 → 5.4.0
◯ next: 13.0.0 → 14.1.0
バージョン範囲を指定して更新
-C
オプションでキャレット範囲(メジャーバージョン固定)での更新が可能です。
bashyarn up -C react
これにより、package.json
のバージョン指定が ^18.3.0
のような形式に更新され、次回以降は 18.x.x の範囲で自動更新されます。
同様に、-T
オプションでチルダ範囲(マイナーバージョン固定)、-E
オプションで完全一致指定もできます。
パターンマッチによる更新
ワイルドカードを使って、複数のパッケージを一括更新できます。
bashyarn up '@types/*'
このコマンドは、@types/
で始まるすべての TypeScript 型定義パッケージを更新します。モノレポや関連パッケージをまとめて更新する際に有効です。
yarn dedupe - 重複パッケージの削除
yarn dedupe
は、同じパッケージの異なるバージョンが複数インストールされている状態を解消し、依存関係を最適化するコマンドです。
重複が発生する仕組み
プロジェクトが成長すると、異なるパッケージが同じ依存関係の異なるバージョンを要求することがあります。
mermaidflowchart TB
app["アプリケーション"] --> pkgA["パッケージ A"]
app --> pkgB["パッケージ B"]
pkgA -.->|要求| lodash1["lodash@4.17.20"]
pkgB -.->|要求| lodash2["lodash@4.17.21"]
lodash1 --> node1["node_modules<br/>(重複発生)"]
lodash2 --> node1
図で理解できる要点:
- 複数のパッケージが同じライブラリの異なるバージョンを要求します
- 結果として、
node_modules
に重複したパッケージがインストールされます yarn dedupe
により、互換性のある範囲で統一できます
基本的な使い方
引数なしで実行すると、すべての重複を自動解消します。
bashyarn dedupe
実行後、yarn.lock
が更新され、可能な限り単一バージョンに統一されます。これにより、node_modules
のサイズが削減され、インストール速度も向上します。
確認のみ実行
実際に変更を加えず、重複の有無だけを確認したい場合は --check
オプションを使います。
bashyarn dedupe --check
CI/CD パイプラインで重複チェックを自動化する際に便利です。重複が検出された場合、終了コードが 0 以外になるため、テストを失敗させることができます。
戦略を指定して実行
-s
オプションで重複解消の戦略を指定できます。
bashyarn dedupe -s highest
主な戦略は以下の通りです。
highest
: 最も高いバージョンに統一lowest
: 最も低いバージョンに統一(互換性重視)
新機能や改善を取り入れたい場合は highest
、安定性を重視する場合は lowest
を選択します。
特定パッケージのみ dedupe
パッケージ名を指定して、特定のパッケージのみ重複解消することも可能です。
bashyarn dedupe lodash
大規模プロジェクトで、影響範囲を限定したい場合に活用できます。
yarn dlx - 一時的なパッケージ実行
yarn dlx
は、パッケージをグローバルにインストールせず、一時的にダウンロードして実行するコマンドです。npm の npx
に相当します。
基本的な使い方
最もシンプルな形は、実行したいコマンドを直接指定する方法です。
bashyarn dlx create-react-app my-app
このコマンドは以下の処理を行います。
create-react-app
パッケージを一時的にダウンロード- コマンドを実行(
my-app
ディレクトリに React アプリを生成) - 実行後、一時ファイルを削除
グローバル環境を汚さず、常に最新版を使用できるメリットがあります。
TypeScript プロジェクトの初期化
TypeScript プロジェクトを初期化する際にも便利です。
bashyarn dlx tsc --init
tsconfig.json
が生成され、TypeScript コンパイラの設定が初期化されます。プロジェクトに typescript
をインストールしていない状態でも実行できます。
コードフォーマッターの一時実行
Prettier などのフォーマッターを試したい場合にも活用できます。
bashyarn dlx prettier --write src/**/*.ts
プロジェクトに Prettier をインストールせず、一度だけフォーマットを実行したい場合に便利です。
複数パッケージを指定して実行
-p
オプションで、追加のパッケージを指定できます。
bashyarn dlx -p typescript -p ts-node ts-node script.ts
このコマンドは、typescript
と ts-node
の両方を一時的にインストールして、TypeScript スクリプトを実行します。
バージョンを指定して実行
特定のバージョンを使用したい場合、@バージョン
構文を使います。
bashyarn dlx create-next-app@13 my-next-app
これにより、Next.js 13 系の create-next-app
が実行されます。古いバージョンでのプロジェクト生成や、バージョン別の動作確認に役立ちます。
yarn workspaces - モノレポ管理
yarn workspaces
は、一つのリポジトリで複数のパッケージを管理するモノレポ構成を実現する機能です。
モノレポの基本構成
モノレポでは、以下のようなディレクトリ構成を取ることが一般的です。
plaintextmy-monorepo/
├── package.json # ルート package.json
├── packages/
│ ├── app/ # アプリケーション
│ │ └── package.json
│ ├── components/ # 共通コンポーネント
│ │ └── package.json
│ └── utils/ # ユーティリティ
│ └── package.json
└── yarn.lock
ルートの package.json
で workspaces を定義します。
json{
"name": "my-monorepo",
"private": true,
"workspaces": ["packages/*"]
}
private: true
は、ルートパッケージを npm に公開しないための設定です。
すべてのワークスペースでコマンド実行
foreach
サブコマンドで、各ワークスペースに対してコマンドを実行できます。
bashyarn workspaces foreach run build
このコマンドは、packages/app
、packages/components
、packages/utils
それぞれで yarn run build
を実行します。
並列実行でビルド時間を短縮
--parallel
オプションで、並列実行が可能です。
bashyarn workspaces foreach --parallel run build
依存関係のないワークスペースは同時にビルドされ、全体の実行時間が短縮されます。
mermaidflowchart LR
start["ビルド開始"] --> parallel1["app<br/>(並列)"]
start --> parallel2["components<br/>(並列)"]
start --> parallel3["utils<br/>(並列)"]
parallel1 --> done["ビルド完了"]
parallel2 --> done
parallel3 --> done
図で理解できる要点:
--parallel
オプションにより、独立したワークスペースは同時にビルドされます- ビルド時間が大幅に短縮され、開発効率が向上します
- 依存関係があるパッケージは、依存先の完了を待ってから実行 �� れます
依存順にビルド
パッケージ間に依存関係がある場合、--topological
オプションで依存順に実行します。
bashyarn workspaces foreach --topological run build
例えば、app
が components
に依存している場合、自動的に components
→ app
の順でビルドされます。
特定のワークスペースのみ対象
--include
オプションで、対象を絞り込めます。
bashyarn workspaces foreach --include 'packages/app' run test
packages/app
のみでテストが実行されます。部分的な検証や開発時の高速化に有効です。
ワークスペース間の依存関係を追加
ワークスペース内のパッケージを相互に参照する場合、workspace:
プロトコルを使います。
packages/app/package.json
の例:
json{
"name": "app",
"dependencies": {
"components": "workspace:*"
}
}
workspace:*
により、同じモノレポ内の components
パッケージが参照されます。この設定により、以下のメリットがあります。
- ローカル開発時、常に最新のコードが参照されます
- 公開時には、適切なバージョン番号に自動変換されます
- シンボリックリンクにより、効率的なファイル管理が実現します
すべてのワークスペースの依存関係を更新
ルートディレクトリで yarn install
を実行すると、すべてのワークスペースの依存関係が一括でインストールされます。
bashyarn install
各ワークスペースで個別に yarn install
を実行する必要はありません。Yarn が自動的に依存関係を解決し、最適化されたインストールを行います。
まとめ
Yarn の主要コマンド add
、up
、dedupe
、dlx
、workspaces
について、実務で役立つ使い方とオプションを解説しました。これらのコマンドを使いこなすことで、以下の効果が得られます。
開発効率の向上
適切なコマンドとオプションを選択することで、パッケージ管理にかかる時間を削減できます。特に yarn dlx
による一時実行や、yarn workspaces
によるモノレポ管理は、大規模プロジェクトで大きな効果を発揮するでしょう。
プロジェクトの安定性向上
yarn dedupe
による重複解消や、-E
オプションによる完全バージョン固定により、依存関係の予期しない変更を防ぎ、再現性の高い環境を構築できます。
チーム開発の円滑化
yarn.lock
による決定論的な依存解決と、Workspaces による統一的なパッケージ管理により、チームメンバー全員が同じ環境で開発できます。
本記事で紹介したチートシート(早見表)を参照しながら、プロジェクトに最適なコマンドを選択してください。Yarn の強力な機能を活用することで、より快適で生産性の高い開発体験が実現できるはずです。
関連リンク
- article
Yarn コマンド チートシート:add/up/dedup/dlx/workspaces 早見表
- article
Yarn のインストール完全ガイド:Corepack 有効化からバージョン固定まで
- article
Yarn とは?npm・pnpm と何が違うのかを 3 分で理解【決定版】
- article
ESLint を Yarn + TypeScript + React でゼロから構築:Flat Config 完全手順(macOS)
- article
npm と yarn:パッケージ管理の違いとベストプラクティス
- article
Node.js のパッケージ管理ツールの Yarn をサクッとインストールする手順
- article
Convex で Presence(在席)機能を実装:ユーザーステータスのリアルタイム同期
- article
Next.js の RSC 境界設計:Client Components を最小化する責務分離戦略
- article
Mermaid 矢印・接続子チートシート:線種・方向・注釈の一覧早見
- article
Codex とは何か?AI コーディングの基礎・仕組み・適用範囲をやさしく解説
- article
MCP サーバー 設計ベストプラクティス:ツール定義、権限分離、スキーマ設計の要点まとめ
- article
Astro で動的 OG 画像を生成する:Satori/Canvas 連携の実装レシピ
- blog
iPhone 17シリーズの発表!全モデルiPhone 16から進化したポイントを見やすく整理
- blog
Googleストアから訂正案内!Pixel 10ポイント有効期限「1年」表示は誤りだった
- blog
【2025年8月】Googleストア「ストアポイント」は1年表記はミス?2年ルールとの整合性を検証
- blog
Googleストアの注文キャンセルはなぜ起きる?Pixel 10購入前に知るべき注意点
- blog
Pixcel 10シリーズの発表!全モデル Pixcel 9 から進化したポイントを見やすく整理
- blog
フロントエンドエンジニアの成長戦略:コーチングで最速スキルアップする方法
- review
今の自分に満足していますか?『持たざる者の逆襲 まだ何者でもない君へ』溝口勇児
- review
ついに語られた業界の裏側!『フジテレビの正体』堀江貴文が描くテレビ局の本当の姿
- review
愛する勇気を持てば人生が変わる!『幸せになる勇気』岸見一郎・古賀史健のアドラー実践編で真の幸福を手に入れる
- review
週末を変えれば年収も変わる!『世界の一流は「休日」に何をしているのか』越川慎司の一流週末メソッド
- review
新しい自分に会いに行こう!『自分の変え方』村岡大樹の認知科学コーチングで人生リセット
- review
科学革命から AI 時代へ!『サピエンス全史 下巻』ユヴァル・ノア・ハラリが予見する人類の未来