dependency-updates について
Composer で Drupal の依存関係を更新するためのスキルです。ブランチ作成からパッケージ更新、競合解決、検証までを案内し、コミットやデプロイの判断も促します。
主な機能
- 01更新前の新規ブランチ作成
- 02古いパッケージの確認
- 03Drupal コアとモジュールの更新
- 04依存関係の競合診断
- 05バージョン・安全性・起動状態の検証
活用シーン
- 01古い Drupal パッケージの確認
- 02コアまたはコントリビュートモジュールの更新
- 03Composer のバージョン競合の解決
- 04コミットやデプロイ前の更新確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ acquia/ acquia-skills --skill dependency-updatesインストール後、Claude Code で/dependency-updatesを入力して読み込まれたか確認します。
詳細
Composer を使用した Drupal の依存関係の更新
次の場合に使用します:
- 古くなったパッケージを確認する
- Drupal コアを新しいマイナーリリースまたはパッチリリースに更新する
- コントリビュートモジュールまたはライブラリを更新する
- 更新後に Composer のバージョン競合を解決する
開始前 — ブランチを作成する
この手順は必須です。新しいブランチを作成して確認するまで、Composer コマンドを実行しないでください。
mainまたはmasterでパッケージを直接更新しないでください。
まず現在のブランチを確認します:
git branch --show-current
ユーザーが main、master、または保護されているブランチにいる場合は、作業を中断し、次のように尋ねます:「今回の更新用に、新しいブランチにどのような名前を付けますか?」
名前が決まっていない場合は、デフォルトの名前を提案します(例:deps/drupal-updates-YYYY-MM-DD)。
git checkout -b <branch-name>
続行する前に、新しいブランチがアクティブであることを確認します:
git branch --show-current
保護されていないブランチであることが出力で確認できてから、次の手順に進みます。
古くなったパッケージを確認する
composer outdated
新しいバージョンが利用可能なすべてのパッケージが表示されます。列:現在のバージョン → 利用可能な最新バージョン。
直接依存関係のみを確認する
composer outdated --direct
特定のパッケージを確認する
composer outdated drupal/core-recommended
特定のパッケージを更新する
composer update drupal/package --with-all-dependencies
複数のパッケージを一度に更新する
composer update drupal/package1 drupal/package2 --with-all-dependencies
Drupal コアを更新する(マイナーまたはパッチ)
Drupal コアはいくつかのパッケージに分かれています。すべてをまとめて更新します:
composer update drupal/core-recommended drupal/core-composer-scaffold drupal/core-project-message --with-all-dependencies
注: マイナーアップグレード(例:10.2 → 10.3)では、まず
composer.jsonのバージョン制約を緩和する必要がある場合があります:"drupal/core-recommended": "^10.3"その後、上記の更新コマンドを実行します。
インストール済みのバージョンを確認する
composer show drupal/core | grep versions
すべてのパッケージを更新する
既存の composer.json の制約の範囲内で、すべてを更新します:
composer update
これにより
composer.lockは更新されますが、composer.jsonのバージョン制約は変更されません。古いメジャーバージョンに固定されているパッケージは、その境界を越えて更新されません。
すべての Drupal コントリビュートモジュールを更新する
composer update "drupal/*" --with-all-dependencies
競合の解決
「要件を解決できませんでした」
更新を妨げているものを特定します:
# What requires the package you're trying to update?
composer why drupal/package
# What prevents the target version?
composer why-not drupal/package 2.x
composer.json の競合している制約を調整して、再試行します。
2 つのコントリビュートモジュール間の競合
# Check full dependency chain
composer depends drupal/module-a
composer depends drupal/module-b
Composer が互換性のある組み合わせを見つけられるよう、両方をまとめて更新します:
composer update drupal/module-a drupal/module-b --with-all-dependencies
問題のある更新を元に戻す
composer update によってリグレッションが発生した場合は、バージョン管理から以前のロックファイルを復元して、再インストールします:
git checkout composer.json composer.lock
composer install
更新がすでにコミットされている場合は、コミットを取り消します:
git revert HEAD
composer install
更新を検証する
# Confirm installed versions
composer show drupal/core-recommended
composer show --outdated
更新後は composer audit を実行し、新たなアドバイザリが発生していないことを確認します:
composer audit
Drupal のブートストラップが引き続き成功することを確認する
Drush がローカルで利用可能な場合:
drush status
期待される結果:Drupal bootstrap: Successful。ブートストラップに失敗した場合はコミットせず、先に原因を調査してください。
検証後は、必ず次の質問を順番にユーザーに尋ねてください:
1. 「これらの変更をコミットしますか?」
- はいの場合:
git add composer.json composer.lock git commit -m "Update Drupal dependencies"- いいえの場合 → 続行する前に、
composer.jsonとcomposer.lockが未コミットであることをユーザーに伝えます。2. 「これらの変更を Acquia 環境にデプロイしますか?」
- はいの場合 → コードのプッシュ、環境の切り替え、必要に応じたパイプラインビルドの実行については、Drupal 更新およびデプロイのプレイブック に従います。
- いいえの場合 → 完了です。
3. デプロイ後: 作業完了とする前に、対象環境でデータベース更新を実行します:
drush updb --yes drush cr
トラブルシューティング
| 問題 | コマンド |
|---|---|
| 更新が無視される — パッケージが古いまま | composer.json の制約を確認し、必要に応じて緩和します |
更新後に composer install が失敗する | composer why-not package version を実行して競合を特定します |
| 予期しないパッケージが変更された | コミットする前に git diff composer.lock を確認します |
| メモリ制限エラー | COMPOSER_MEMORY_LIMIT=-1 composer update |
関連
- セキュリティ更新 — 特定の脆弱性に関する勧告を修正します