用 composer 管理 Drupal 8/9/10 是标准实践,需基于 drupal/recommended-project 初始化,模块装入 web/modules/contrib/,核心升级通过 composer require drupal/core-recommended,自定义代码放 web/modules/custom/ 等目录,始终依赖 composer.lock 保障一致性。

用 Composer 管理 Drupal 8/9/10 项目是标准实践,它能统一管理核心、模块、主题和依赖库,避免手动复制文件带来的版本混乱和安全风险。关键不是“能不能装模块”,而是“怎么装得干净、可复现、易升级”。
初始化一个标准的 Drupal Composer 项目
不建议从零手写 composer.json。直接用官方推荐的 drupal/recommended-project 模板:
- 运行
composer create-project drupal/recommended-project my-site - 这会生成带正确目录结构(
web/为 DocRoot)、预设脚本、合理 autoload 配置的项目 -
docroot/或web/是 Drupal 核心所在,modules/contrib/、themes/contrib/等由 Composer 自动管理,不再放根目录下
安装和更新贡献模块(Contrib Modules)
所有模块必须通过 Composer 安装到 web/modules/contrib/,不能手动丢进去。
- 装新模块:例如安装 Pathauto,运行
composer require drupal/pathauto - 指定版本:如
composer require drupal/views:^8.9(适配 Drupal 9)或composer require drupal/Token:1.0 - 更新单个模块:
composer update drupal/devel - 更新全部(谨慎!):
composer update—— 建议加--with-all-dependencies保持依赖一致
升级 Drupal 核心(8 → 9 → 10)
核心升级本质是升级 drupal/core 及其兼容组件,不是覆盖文件。
- 先确认目标版本支持的 php 和依赖要求(如 Drupal 10 要 PHP 8.1+)
- 运行
composer require drupal/core-recommended:^10 --update-with-dependencies(以升到 D10 为例) - Composer 会自动处理
drupal/core、drupal/core-composer-scaffold、drupal/core-project-message等关联包 - 升级后务必运行
drush updb和drush cr,并检查 Drupal 官方升级指南 中的清理项(如废弃模块、配置变更)
处理自定义代码与本地开发
自己的模块、主题、配置不要放进 contrib/ 目录,也不应由 Composer 管理源码。
- 自定义模块放在
web/modules/custom/,主题放web/themes/custom/—— 这些目录不被 Composer 清理 - 若需在多环境共享自定义代码,可将其打包为私有包,配置
repositories到 composer.json - 开发时常用
composer install --no-interaction --prefer-dist快速重建依赖;CI/CD 应基于composer.lock部署,确保一致性
基本上就这些。Composer 不是魔法,但只要坚持“所有第三方代码走 require,所有自定义代码放 custom 目录,所有操作留 lock 文件”,就能稳住 Drupal 项目的生命周期管理。
以上就是如何使用 Composer 管理 Drupal 8/9/10 项目的模块和核心?的详细内容,更多请关注php中文网其它相关文章!