AtCoderNoviSteps icon indicating copy to clipboard operation
AtCoderNoviSteps copied to clipboard

[Dev] pnpm を packageManager のみで管理 + Dependabot などで定期更新しましょう

Open KATO-Hiro opened this issue 3 months ago • 1 comments

WHY

  • package.json で 二重化されており、不整合が発生する可能性があるため

KATO-Hiro avatar Sep 14 '25 07:09 KATO-Hiro

pnpmdevDependencies から削除する場合の注意点と対処方法を考慮する必要があります。


妥当性

  • 妥当な理由:

    • packageManager フィールドに [email protected] が指定されているため、Corepack を使用して pnpm のバージョンを固定できます。
    • devDependenciespnpm を残すと、バージョンの管理が二重になり、更新の同期が必要になるため、冗長でドリフト(不整合)が発生する可能性があります。
  • 懸念点:

    • pnpmdevDependencies から削除すると、Dependabot が pnpm のバージョンを自動更新できなくなります。
    • Corepack は手動でバージョンを更新する必要があるため、更新管理がやや煩雑になる可能性があります。

Dependabot での更新ができない問題

Dependabot は devDependencies に含まれるパッケージを監視して更新しますが、packageManager フィールドの pnpm は対象外です。そのため、pnpmdevDependencies から削除すると、Dependabot による自動更新ができなくなります。


対処方法

1. Corepack を使用しつつ Dependabot を活用する

  • packageManager フィールドを維持し、pnpm のバージョンを手動で更新する。
  • Dependabot による通知が必要な場合、pnpmdevDependencies に残す。

2. pnpmdevDependencies から削除し、手動で更新

  • pnpmdevDependencies から削除し、packageManager フィールドのみで管理する。
  • 定期的に pnpm のバージョンを手動で更新する運用を確立する。

3. 自動更新をスクリプト化

  • pnpm のバージョンを更新するスクリプトを作成し、CI/CD パイプラインや定期ジョブで実行する。
  • 例: npx update-pnpm-version のようなスクリプトを作成。

推奨される運用方法

  • 短期的: pnpmdevDependencies に残し、Dependabot による自動更新を利用する。
  • 長期的: pnpmdevDependencies から削除し、packageManager フィールドで管理。更新は手動またはスクリプトで行う。

結論

pnpmdevDependencies から削除すると Dependabot による自動更新ができなくなるため、更新管理の方法を明確にする必要があります。短期的には devDependencies に残し、長期的には packageManager フィールドでの管理に移行することを推奨します。

KATO-Hiro avatar Sep 14 '25 07:09 KATO-Hiro