mcpField
D
dependency-updates

dependency-updates

github.com/acquia开发10121 次安装今天更新
代码仓库

关于 dependency-updates

使用 Composer 更新 Drupal 依赖的技能,指导开发者先准备分支,再更新软件包、解决冲突并验证结果,最后处理提交或部署决策。

主要功能

  1. 01更新前要求创建新分支
  2. 02检查过期软件包
  3. 03更新 Drupal 核心与模块
  4. 04诊断依赖冲突
  5. 05验证版本、安全与引导状态

适用场景

  1. 01检查过期的 Drupal 软件包
  2. 02更新核心或贡献模块
  3. 03解决 Composer 版本冲突
  4. 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 环境吗?”

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

相关

评论

支持 Markdown