3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

yarn v1 から pnpm への移行

Last updated at Posted at 2025-05-12

この記事について

yarn v1 を使っていたリポジトリの更新に際して pnpmへ移行した話
(n番煎じですが手順を整理するためアウトプット)

背景

yarn はすでに v4 が出ており、v1 から移行することが推奨されている

Screenshot 2025-05-08 15.29.24.jpg

試行錯誤

とりあえず、最新の yarn へ移行を試みた

yarn install → Resolution step でしばらく待たされてエラー

どうやら yarn は v1 と v2 以降では大きく仕組みが異なっているらしい
(v2以降、node_modules を使わないPnP方式を採用)

これに対応していないパッケージが使えないなどの制限があり、引っかかった模様

そして pnpm へ

更新されない v1 を使い続けるわけにもいかないので、他の選択肢を検討

使いやすさ、安定性の面から pnpm を選択

以下記事の比較が見やすく分かりやすかったです

早速動かしてみる

# pnpm インストール (今回は mise を利用)
mise use pnpm

# yarn.lock から pnpm-lock.yaml を生成
pnpm import

# 不要になった yarn.lock は削除
rm ./yarn.lock

# node_modulesも一新
rm -rf ./node_modules   # install 後 pnpm prune で良かったかも
pnpm install

# 利用パッケージ内の deprecated な依存を教えてくれた
> WARN  X deprecated subdependencies found: <package>@<version>

# 古いパッケージを調べてアップデート
pnpm outdated
pnpm add <package>

# 脆弱性チェック
pnpm audit

WARN, auditで見つけた脆弱性等について

package.json で overrides することで対応

package.json
{
  "pnpm": {
    "overrides": {
      "<package>": "^<version>",
    }
  },
}

pnpm 強制 (npm, yarn を禁止)する設定も入れてみた

package.json
 "scripts": {
    "preinstall": "npx only-allow pnpm",
    ・・・
  },

結果、特に問題なく動作しました

所感

  • yarn v1 から v4 へ移行するより pnpm へ移行するほうが簡単だった
  • 既存構成をほぼそのまま使えるのでストレスがない
  • (体感)パッケージのダウンロードが早くなって快適
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?