AtCoderNoviSteps
AtCoderNoviSteps copied to clipboard
[Dev] pnpm を packageManager のみで管理 + Dependabot などで定期更新しましょう
WHY
- package.json で 二重化されており、不整合が発生する可能性があるため
pnpm を devDependencies から削除する場合の注意点と対処方法を考慮する必要があります。
妥当性
-
妥当な理由:
packageManagerフィールドに[email protected]が指定されているため、Corepack を使用してpnpmのバージョンを固定できます。devDependenciesにpnpmを残すと、バージョンの管理が二重になり、更新の同期が必要になるため、冗長でドリフト(不整合)が発生する可能性があります。
-
懸念点:
pnpmをdevDependenciesから削除すると、Dependabot がpnpmのバージョンを自動更新できなくなります。- Corepack は手動でバージョンを更新する必要があるため、更新管理がやや煩雑になる可能性があります。
Dependabot での更新ができない問題
Dependabot は devDependencies に含まれるパッケージを監視して更新しますが、packageManager フィールドの pnpm は対象外です。そのため、pnpm を devDependencies から削除すると、Dependabot による自動更新ができなくなります。
対処方法
1. Corepack を使用しつつ Dependabot を活用する
packageManagerフィールドを維持し、pnpmのバージョンを手動で更新する。- Dependabot による通知が必要な場合、
pnpmをdevDependenciesに残す。
2. pnpm を devDependencies から削除し、手動で更新
pnpmをdevDependenciesから削除し、packageManagerフィールドのみで管理する。- 定期的に
pnpmのバージョンを手動で更新する運用を確立する。
3. 自動更新をスクリプト化
pnpmのバージョンを更新するスクリプトを作成し、CI/CD パイプラインや定期ジョブで実行する。- 例:
npx update-pnpm-versionのようなスクリプトを作成。
推奨される運用方法
- 短期的:
pnpmをdevDependenciesに残し、Dependabot による自動更新を利用する。 - 長期的:
pnpmをdevDependenciesから削除し、packageManagerフィールドで管理。更新は手動またはスクリプトで行う。
結論
pnpm を devDependencies から削除すると Dependabot による自動更新ができなくなるため、更新管理の方法を明確にする必要があります。短期的には devDependencies に残し、長期的には packageManager フィールドでの管理に移行することを推奨します。