目的別に分類した Yarn コマンドのリファレンス
プロジェクトの初期化と管理
新しいプロジェクトを開始したり、既存のプロジェクト構成を管理します。
コマンド |
説明 |
使用例・オプション |
yarn init |
対話形式で package.json ファイルを生成し、新しいプロジェクトを初期化します。 |
yarn init
オプション:
-y / --yes : すべての質問にデフォルト値で回答し、対話をスキップします。
-p / --private : private: true を package.json に追加し、誤って公開されるのを防ぎます。
# デフォルト値で初期化
yarn init -y
|
yarn set version |
Yarn Berry (v2+) プロジェクトで使用する Yarn のバージョンを設定・更新します。Corepack 経由で管理されます。 |
# 最新安定版に設定
yarn set version stable
# 特定のバージョンに設定
yarn set version 3.2.0
# 最新のリリース候補版に設定
yarn set version rc
# canary ビルドに設定
yarn set version canary
# ローカルの yarn リリースファイルから設定
yarn set version /path/to/yarn.js
|
パッケージの依存関係管理
プロジェクトで利用するライブラリやツール(パッケージ)を追加、更新、削除します。
パッケージの追加
コマンド |
説明 |
使用例・オプション |
yarn add <package...> |
1つまたは複数のパッケージを dependencies (本番環境用依存) として追加します。 |
# 単一パッケージを追加
yarn add react
# 複数パッケージを追加
yarn add lodash moment
# 特定バージョンを追加
yarn add react@17.0.2
# タグ指定で追加 (例: next)
yarn add typescript@next
主なオプション:
-D / --dev : devDependencies (開発環境用依存) として追加します。
-P / --peer : peerDependencies (ピア依存) として追加します。
-O / --optional : optionalDependencies (オプショナル依存) として追加します。
-E / --exact : バージョン番号を固定して (例: 1.2.3 ) 追加します。
-T / --tilde : チルダ (~ ) 範囲で (例: ~1.2.3 ) 追加します。
--ignore-scripts : パッケージのインストール後スクリプトを実行しません。
# 開発依存として追加
yarn add -D jest
# ピア依存として追加
yarn add -P react
# バージョン固定で追加
yarn add -E axios
Yarn Berry (v2+) 特有:
-i / --interactive : 依存関係の解決に関する詳細な対話モードを開始します。
|
パッケージのインストール
コマンド |
説明 |
使用例・オプション |
yarn install (または単に yarn ) |
package.json とロックファイル (yarn.lock ) に基づいて、すべての依存関係をインストールします。 |
yarn install
主なオプション:
--force : ローカルキャッシュを無視して、すべてのパッケージを再ダウンロードします。
--production : devDependencies を含めず、本番環境用の依存のみをインストールします。
--frozen-lockfile (v1) / --immutable (v2+): ロックファイルを変更せずにインストールします。変更が必要な場合はエラーになります (CI環境で有用)。
--check-files : 既にインストールされているファイルが存在するか確認します。
--ignore-scripts : インストール後スクリプトを実行しません。
--modules-folder <path> (v1): node_modules ディレクトリの場所を指定します。
--no-lockfile : ロックファイルを生成・更新しません (非推奨)。
# CI 環境でのインストール (ロックファイルを変更しない)
# Yarn v1
yarn install --frozen-lockfile
# Yarn v2+
yarn install --immutable
# 本番用依存のみインストール
yarn install --production
|
パッケージの更新・削除
コマンド |
説明 |
使用例・オプション |
yarn upgrade [package...] |
指定したパッケージ、またはすべてのパッケージを package.json で許可された最新バージョンに更新します。 |
# すべての依存を更新
yarn upgrade
# 特定のパッケージを更新
yarn upgrade react react-dom
# 特定のスコープのパッケージを更新
yarn upgrade --scope @babel
主なオプション:
--latest : package.json のバージョン範囲指定を無視し、最新バージョンに更新しようとします。
--pattern <pattern> : パターンに一致するワークスペース内のパッケージを更新します (ワークスペース使用時)。
# 最新メジャーバージョンも含めて更新
yarn upgrade --latest
|
yarn upgrade-interactive |
対話形式で更新するパッケージを選択できます。 |
yarn upgrade-interactive
主なオプション:
--latest : 最新バージョンを更新候補として表示します。
|
yarn remove <package...> |
指定したパッケージをプロジェクトから削除します。package.json と yarn.lock が更新され、関連ファイルが削除されます。 |
# 単一パッケージを削除
yarn remove lodash
# 複数パッケージを削除
yarn remove moment date-fns
|
ローカルパッケージのリンク
コマンド |
説明 |
使用例・オプション |
yarn link |
現在のパッケージをグローバルにリンクし、他のプロジェクトで利用可能にします。(主にローカル開発用) |
# パッケージ `my-local-library` のディレクトリで実行
cd /path/to/my-local-library
yarn link
|
yarn link <package> |
グローバルにリンクされたパッケージを現在のプロジェクトにリンクします。 |
# `my-app` プロジェクトのディレクトリで実行
cd /path/to/my-app
yarn link my-local-library
|
yarn unlink [package] |
現在のパッケージ、または指定したパッケージのグローバルリンクを解除します。 |
# `my-local-library` のリンクを解除 (my-local-library ディレクトリで)
yarn unlink
# `my-app` プロジェクトから `my-local-library` のリンクを解除 (my-app ディレクトリで)
yarn unlink my-local-library
|
yarn import |
Yarn Classic (v1) 既存の package-lock.json (npm) から yarn.lock ファイルを生成しようと試みます。依存関係の移行に役立ちます。 |
# package-lock.json があるディレクトリで実行
yarn import
|
パッケージの実行とスクリプト
package.json
に定義されたスクリプトを実行したり、インストールされたコマンドラインツールを実行します。
コマンド |
説明 |
使用例・オプション |
yarn run <script> [args...] |
package.json の scripts セクションで定義されたスクリプトを実行します。 |
# "build" スクリプトを実行
yarn run build
# "test" スクリプトに引数を渡して実行
yarn run test --watch
run は省略可能な場合が多いです。
yarn build
yarn test --watch
|
yarn <script> [args...] |
yarn run のショートカット。定義されたスクリプトを直接実行します。 |
# "start" スクリプトを実行
yarn start
# "lint" スクリプトを実行
yarn lint
|
yarn dlx <command> [args...] |
Yarn Berry (v2+) パッケージを一時的にダウンロードして実行します (npx に相当)。インストールせずにコマンドを実行したい場合に便利です。 |
# create-react-app を一時的に実行
yarn dlx create-react-app my-app
# 特定バージョンのパッケージを実行
yarn dlx cowsay@1.5.0 "Hello"
主なオプション:
-p <package> : 実行するコマンドが含まれるパッケージ名を指定します。
yarn dlx -p prettier prettier --write .
|
yarn exec <command> [args...] |
プロジェクトの依存関係のコンテキストで任意のコマンドを実行します。ローカルにインストールされたバイナリを実行するのに便利です。 |
# ローカルにインストールされた jest を実行
yarn exec jest --coverage
# node スクリプトを実行 (node が依存に含まれている場合)
yarn exec node my-script.js
Yarn Berry (v2+) では、yarn run が内部的に exec のような動作をするため、明示的な exec の必要性は減っています。
|
パッケージの情報表示
インストールされているパッケージや、公開されているパッケージに関する情報を表示します。
コマンド |
説明 |
使用例・オプション |
yarn info <package> [field] |
パッケージに関する情報 (バージョン、依存関係、ライセンスなど) をレジストリから取得して表示します。 |
# react パッケージの情報を表示
yarn info react
# react パッケージの利用可能な全バージョンを表示
yarn info react versions
# react パッケージのライセンス情報を表示
yarn info react license
# lodash の最新バージョン情報を JSON 形式で表示
yarn info lodash version --json
主なオプション:
|
yarn list |
プロジェクトにインストールされているすべてのパッケージとその依存関係をツリー形式で表示します。 |
yarn list
主なオプション:
--depth=<number> : 表示する依存関係の階層の深さを制限します。
--pattern <pattern> : パターンに一致するパッケージのみを表示します。
# 依存関係のトップレベルのみ表示
yarn list --depth=0
# "react" を含むパッケージのみ表示
yarn list --pattern react
|
yarn outdated |
インストールされているパッケージの中で、package.json のバージョン指定範囲内で更新可能なものがあるか確認し、一覧表示します。 |
yarn outdated
|
yarn why <query> |
指定したパッケージがなぜインストールされているのか (どのパッケージが依存しているか) を表示します。 |
# "lodash" がなぜインストールされているか確認
yarn why lodash
# 特定バージョンのパッケージがなぜ存在するか確認
yarn why @types/node@14.x
|
yarn licenses list |
プロジェクトの依存関係のライセンス情報を一覧表示します。 |
yarn licenses list
主なオプション:
--production : 本番環境用の依存関係のみを対象にします。
--json : 出力を JSON 形式にします。
|
yarn licenses generate-disclaimer |
プロジェクトの依存関係すべてのライセンス文書を連結した免責事項テキストを生成します。 |
yarn licenses generate-disclaimer
|
キャッシュと設定の管理
Yarn のキャッシュや設定を管理します。
コマンド |
説明 |
使用例・オプション |
yarn cache clean [package...] |
Yarn のグローバルキャッシュ、または指定したパッケージのキャッシュを削除します。 |
# すべてのキャッシュを削除
yarn cache clean
# 特定のパッケージのキャッシュを削除 (Yarn v1)
yarn cache clean react react-dom
Yarn Berry (v2+) では、キャッシュはプロジェクトごとに .yarn/cache に保存されるため、このディレクトリを直接削除することが推奨されます。
# Yarn v2+ でキャッシュを削除する場合
rm -rf .yarn/cache
|
yarn cache dir |
Yarn のグローバルキャッシュディレクトリのパスを表示します。(主に Yarn v1) |
yarn cache dir
|
yarn config set <key> <value> |
Yarn の設定を行います。プロジェクト固有の設定は .yarnrc.yml に書き込まれます。 |
# npm レジストリのスコープ設定
yarn config set npmScopes.my-org.npmRegistryServer "https://registry.my-org.com"
# init コマンドのデフォルト作成者を設定
yarn config set initAuthorName "My Name"
# プラグインのインポート (Yarn Berry)
yarn config set plugins --json '[{"path": ".yarn/plugins/@yarnpkg/plugin-typescript.cjs", "spec": "@yarnpkg/plugin-typescript"}]'
オプション:
-H / --home : グローバル設定 (~/.yarnrc.yml ) に書き込みます (Yarn Berry)。
--json : 値を JSON として解析します。
|
yarn config get <key> |
指定したキーの設定値を取得して表示します。 |
# 現在のキャッシュフォルダの場所を取得
yarn config get cacheFolder
# init コマンドのデフォルトライセンス設定を取得
yarn config get initLicense
オプション:
|
yarn config delete <key> |
指定したキーの設定を削除します。 |
# init コマンドのデフォルト作成者設定を削除
yarn config delete initAuthorName
|
yarn policies set-version <version> |
Yarn Classic (v1) プロジェクトで使用する Node.js や Yarn のバージョンを強制します (engines フィールドを使用)。 |
# Node.js v14 以上を要求
yarn policies set-version ">=14"
# 特定の Yarn バージョンを要求 (あまり使われない)
# yarn policies set-version "1.22.x"
Yarn Berry (v2+) では yarn set version と Corepack、package.json の packageManager フィールドを使用します。
|
ワークスペース (Workspaces)
モノレポ構成で複数のパッケージを単一リポジトリ内で管理する機能です。
ワークスペースを利用するには、まずルートの package.json
で設定が必要です。
{
"name": "my-monorepo",
"private": true,
"workspaces": [
"packages/*"
]
}
コマンド |
説明 |
使用例・オプション |
yarn workspace <workspace_name> <command> [args...] |
指定したワークスペースのコンテキストで Yarn コマンドを実行します。 |
# "frontend" ワークスペースに lodash を追加
yarn workspace frontend add lodash
# "backend" ワークスペースで "build" スクリプトを実行
yarn workspace backend run build
# "shared-ui" ワークスペースから jest を削除
yarn workspace shared-ui remove jest
|
yarn workspaces list [--json] |
リポジトリ内のすべてのワークスペースとその場所を一覧表示します。 |
yarn workspaces list
# JSON 形式で出力
yarn workspaces list --json
|
yarn workspaces foreach <command> [args...] |
Yarn Berry (v2+) すべてのワークスペース、または指定したワークスペースでコマンドを並列または直列に実行します。 |
# すべてのワークスペースで "build" スクリプトを実行 (並列)
yarn workspaces foreach run build
# すべてのワークスペースでテストを実行 (トポロジカル順、並列)
yarn workspaces foreach -pt run test
# "utils-" で始まるワークスペースのみで lint を実行
yarn workspaces foreach --include "utils-*" run lint
主なオプション:
-p / --parallel : 並列実行 (デフォルト)。
-s / --serial : 直列実行。
-t / --topological : 依存関係の順序 (トポロジカル順) で実行。
-v / --verbose : 詳細なログを出力。
--include <pattern> : 指定したパターンに一致するワークスペースのみ対象。
--exclude <pattern> : 指定したパターンに一致するワークスペースを除外。
|
ルートディレクトリでの yarn add , yarn remove など |
ワークスペースのルートディレクトリで依存関係コマンドを実行すると、通常はルートの package.json に影響しますが、-W オプションでワークスペース全体への操作を示唆できます (主に v1)。 |
# ルートに開発依存を追加 (全ワークスペースから利用可能になることがある)
yarn add -D -W typescript
# ルートから依存を削除
yarn remove -W some-package
Yarn Berry (v2+) では、ルートでの操作は明示的にルートに対して行われ、ワークスペース間の依存関係は各ワークスペース内で管理するのが基本です。
|
プラグイン管理 Yarn Berry (v2+)
Yarn の機能を拡張するプラグインを管理します。
コマンド |
説明 |
使用例・オプション |
yarn plugin import <name_or_path> |
公式またはコミュニティのプラグインをプロジェクトにインポート (インストール) します。プラグインはリポジトリにコミットされます。 |
# TypeScript プラグインをインポート
yarn plugin import typescript
# Constraints プラグインをインポート
yarn plugin import constraints
# ローカルのプラグインファイルをインポート
yarn plugin import ./my-custom-plugin.js
# 特定の npm パッケージからプラグインをインポート
yarn plugin import from @yarnpkg/plugin-foo
|
yarn plugin list |
現在インポートされているプラグインの一覧を表示します。 |
yarn plugin list
オプション:
|
yarn plugin remove <name_or_path> |
インポートされているプラグインを削除します。 |
# TypeScript プラグインを削除
yarn plugin remove typescript
# ローカルのプラグインファイルを指定して削除
yarn plugin remove ./my-custom-plugin.js
|
yarn plugin runtime |
現在アクティブな Yarn プラグインとそのバージョンを表示します。 |
yarn plugin runtime
|
バージョン管理 Yarn Berry (v2+)
Yarn Release Workflow を使用して、ワークスペース内のパッケージバージョンを管理・更新します。
コマンド |
説明 |
使用例・オプション |
yarn version <strategy> |
現在のワークスペース、またはプロジェクト全体のバージョンを更新します。major , minor , patch などの戦略を指定します。deferred (遅延) 戦略を使うと、リリース時にまとめてバージョンを上げることができます。 |
# 現在のワークスペースのパッチバージョンを上げる
yarn version patch
# プロジェクト全体のマイナーバージョンを上げる
# (変更があったワークスペースのみ対象になることが多い)
yarn version minor
# バージョンアップをリリース時まで遅延させる
yarn version deferred
オプション:
--deferred : バージョン更新を遅延させ、.yarn/versions に記録します。
--immediate : 遅延させずに即座にバージョンを更新します (デフォルト)。
|
yarn version check |
ワークスペース間で、package.json に記載されたバージョンと実際のバージョンに矛盾がないかチェックします。 |
yarn version check
オプション:
--interactive / -i : 矛盾が見つかった場合に、対話的に修正を選択できます。
|
yarn versions apply |
yarn version deferred などで遅延されたバージョン更新を適用します。通常、リリースプロセスの一部として実行されます。 |
# 遅延されたすべてのバージョン更新を適用
yarn versions apply --all
# 特定のバージョンファイルに基づいて適用
yarn versions apply 08e1e9a5.yml
オプション:
--all : .yarn/versions 内のすべてのバージョンファイルを適用します。
|
yarn versions bump |
yarn version apply と似ていますが、バージョン更新の適用のみを行います。コミットなどの追加処理は行いません。 |
yarn versions bump
|