关于 dependency-updates
使用 Composer 更新 Drupal 依赖的技能,指导开发者先准备分支,再更新软件包、解决冲突并验证结果,最后处理提交或部署决策。
主要功能
- 01更新前要求创建新分支
- 02检查过期软件包
- 03更新 Drupal 核心与模块
- 04诊断依赖冲突
- 05验证版本、安全与引导状态
适用场景
- 01检查过期的 Drupal 软件包
- 02更新核心或贡献模块
- 03解决 Composer 版本冲突
- 04提交或部署前检查更新
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ acquia/ acquia-skills --skill dependency-updates安装后在 Claude Code 中输入/dependency-updates确认已加载。
详细介绍
使用 Composer 更新 Drupal 依赖
适用于:
- 检查哪些软件包已过时
- 将 Drupal core 更新到较新的次要版本或补丁版本
- 更新 contrib 模块或库
- 更新后解决 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 Core(次要版本或补丁版本)
Drupal core 分为多个软件包。请一并更新:
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 contrib 模块
composer update "drupal/*" --with-all-dependencies
解决冲突
“Your requirements could not be resolved”
找出阻止更新的原因:
# 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 中冲突的约束,然后重试。
两个 contrib 模块之间发生冲突
# 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 |
相关
- 安全更新 — 修复特定漏洞公告