Skip to main content

yarn

yarnでパッケージ管理を行う場合、package.jsonyarn.lockが必要になります。

info

yarnにはyarn v1系yarn berry(V2~V4)系の2種類があります。
大きな違いとして以下があります。

  • V1系よりberry系の方がパッケージインストールの速度が速い
  • V1系よりberry系の方がインストールしたパッケージのサイズが小さい
  • berry系は依存パッケージをnode_modulesディレクトリ配下に実体をダウンロードせずpnp.cjspnp.locker.mjsというファイルで管理する仕様(※)

(※)但し.yarnrc.ymlの設定で従来通りnode_modulesディレクトリ配下に実体をダウンロードすることも可能です。

参考

公式サイト
公式サイト(CLI)
公式サイト(Configuration)
yarn v1系(github)
yarn berry系(github)
yarnをv1からv2(Berry)へ移行する
プロジェクトを壊さず安全に npm から yarn4 へ移行する

環境変数名について

danger

berry系のyarnでは、環境変数名にYARN_***を使用するのは厳禁です。
YARN_***を使用するとyarn install等で以下のようなエラーが発生します。

Unrecognized or legacy configuration settings found...

参考(英語サイト)

バージョン確認

yarn -v

nodejs初期化

yarn init

packageインストール

カレントディレクトリにpackage.json(あればpackage-lock.json)が存在する状態で、
以下コマンドを入力(どちらでも可能)

yarn install
yarn

packageクリーンインストール

カレントディレクトリにpackage.json(あればpackage-lock.json)が存在する状態で、
以下コマンドを入力

yarn install --immutable --immutable-cache --check-cache

packageインストールリスト

yarn info --recursive --dependents

package個別インストール

インストール時にpackage.jsondependenciesordevDependenciesにパッケージ名とバージョンが記載されます。
(yarn.lockも更新されます。)

package.json
  "dependencies": {
<パッケージ名>: <バージョン>,
},
"devDependencies": {
<パッケージ名>: <バージョン>,
}

^付き

yarn add <パッケージ名>
コマンド例
yarn add express

インストール後(パッケージ名の後ろにバージョンを指定しない場合は最新のバージョンを取得します)

package.json
  "dependencies": {
"express": "^4.17.1",
},

^無しバージョン指定

yarn add <パッケージ名>@<version>
コマンド例
yarn add express@4.17.1

インストール後

package.json
  "dependencies": {
"express": "4.17.1",
},

packageアンインストール

info

npmと異なりpackage.jsondependenciesもしくはdevDependenciesも削除されます。
(yarn.lockも更新されます。)

yarn remove <パッケージ名>
コマンド例
yarn remove express
yarn remove prettier

corepack useコマンド

corepack useコマンドでpackage.jsonpackageManagerフィールドに利用するパッケージマネージャーを指定します。
以下では利用するパッケージマネージャーにyarnを指定するコマンドを紹介します。

caution

利用するパッケージマネージャーにyarnを指定した場合、
yarn以外のパッケージマネージャー(npm, pnpm)を使用するとエラーとなります。

package.jsonpackageManagerフィールドyarnを追加するコマンドは以下の通りです。
(SHA-512ハッシュを含むバージョンが追加されます)

corepack use yarn@{YARN_VER}
コマンド例

yarn4.5.1package.jsonpackageManagerフィールドに追加

corepack use yarn@4.5.1

コマンド実行後の結果

package.json
  ...
"packageManager": "yarn@4.5.0+sha512.837566d24eec14ec0f5f1411adb544e892b3454255e61fdef8fd05f3429480102806bac7446bc9daff3896b01ae4b62d00096c7e989f1596f2af10b927532f39"

パッケージを最新にupgrade

info

このコマンドは対話的に全パッケージのverを最新版に更新します。

パッケージのバージョンアップ
yarn upgrade-interactive