用途
该技能用于在 Drupal 项目中通过 Composer 管理依赖更新,适用于以下场景:检查哪些包已过期;将 Drupal 核心更新到更新的次要或补丁版本;更新贡献模块或库;解决更新后出现的 Composer 版本冲突。
主要能力
- 检查过期包:使用
composer outdated查看所有有更新版本的包,composer outdated --direct仅检查直接依赖,composer outdated drupal/core-recommended检查指定包。 - 更新指定包:
composer update drupal/package --with-all-dependencies,支持一次更新多个包。 - 更新 Drupal 核心:Drupal 核心分散在多个包中,需一起更新
drupal/core-recommended、drupal/core-composer-scaffold、drupal/core-project-message。次要升级(如 10.2 → 10.3)可能需先在 composer.json 中放宽版本约束,例如"drupal/core-recommended": "^10.3"。 - 更新全部包:
composer update在现有 composer.json 约束内更新所有包,只改 composer.lock,不改变 composer.json 中的版本约束。 - 更新所有 Drupal 贡献模块:
composer update "drupal/*" --with-all-dependencies。 - 解决冲突:使用
composer why、composer why-not、composer depends排查阻塞更新的依赖,调整冲突约束后重试,或同时更新冲突的多个模块。 - 回滚错误更新:从版本控制恢复之前的 lock 文件并重新安装,或回退已提交的提交。
- 验证更新:确认已安装版本,运行
composer audit检查新引入的安全公告,使用drush status确认 Drupal 仍能正常引导。
使用方式
使用前必须创建并确认新分支,禁止在 main、master 或任何受保护分支上直接运行 Composer 命令。先执行 git branch --show-current 检查当前分支;若在受保护分支上,需停止并询问新分支名称,建议默认名称如 deps/drupal-updates-YYYY-MM-DD,然后 git checkout -b <branch-name> 并再次确认分支已切换。之后按需执行检查、更新、冲突解决和验证命令。验证后需依次询问用户是否提交更改、是否部署到 Acquia 环境;若部署,需在目标环境运行 drush updb --yes 和 drush cr。
适用场景
适用于使用 Composer 管理依赖的 Drupal 项目,尤其是需要定期更新核心、贡献模块和库,或处理更新后版本冲突的开发与运维流程。
限制
该技能要求使用 Git 分支工作流,且更新前必须创建新分支。次要版本升级可能需要手动放宽 composer.json 中的版本约束。composer update 不会改变 composer.json 中的版本约束,固定到旧主版本的包不会跨越主版本边界。若 Drupal 引导失败,不应提交,需先排查。部署到 Acquia 环境的具体步骤引用“Drupal Update and Deploy playbook”,该 playbook 内容暂未提供。