SuperAPI AI 工具集

dependency-updates

部署与运维

查看项目

更新于 10-15 08:18

技能介绍

用途

该技能用于在 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 内容暂未提供。