如何使用 composer 管理 Drupal 8/9 的核心和模块?

发布时间 - 2025-11-24 00:00:00    点击率:
使用 Composer 管理 Drupal 项目可精确控制依赖并确保环境一致,推荐通过 composer create-project drupal/recommended-project 初始化;安装模块用 composer require drupal/MODULE_NAME,Composer 会自动处理依赖;更新模块运行 composer update drupal/MODULE_NAME 或整体更新 composer update,并执行 drush updb 升级数据库;核心更新应使用 composer update drupal/core-recommended drupal/core-dev-recommended --with-dependencies 以保持依赖稳定;可通过配置 repository 添加私有源,自定义模块放 web/modules/custom 但不推荐;移除模块需先 drush pmu 再 composer remove;仅提交 composer.json 和 composer.lock 到版本控制,实现可复现部署。

使用 Composer 管理 Drupal 8/9 的核心和模块是现代 Drupal 开发的标准做法。它能帮助你精确控制依赖、避免手动下载模块,并确保环境一致性。

初始化项目并安装 Drupal 核心

如果你从零开始搭建 Drupal 项目,推荐使用官方的项目模板:

composer create-project drupal/recommended-project my_drupal_site

这会创建一个名为 my_drupal_site 的目录,包含 Drupal 推荐的文件结构,其中核心代码位于 web 目录下,符合安全最佳实践。

添加和更新模块

使用 composer require 命令安装 contrib 模块(来自 drupal.org):

  • composer require drupal/views_bootstrap
  • composer require drupal/pathauto

Composer 会自动解析依赖,比如 pathauto 需要 token 模块,它也会一并安装。

升级模块时运行:

  • composer update drupal/pathauto
  • 或整体更新:composer update

建议在更新后运行数据库更新:drush updb

管理 Drupal 核心更新

Drupal 8/9 使用 drupal/core-recommended 包,它锁定核心组件的版本以保证安全性和稳定性。

要更新核心:

  • 查看可用更新:composer outdated "drupal/*"
  • 执行更新:composer update drupal/core-recommended drupal/core-dev-recommended --with-dependencies

注意:不要单独更新 drupal/core,应使用 recommended 包来保持依赖一致。

处理自定义和特殊需求

某些模块可能不在 Packagist 上,可配置 repository:

composer config repositories.drupal composer https://packages.drupal.org/8

若需添加非 Composer 管理的模块(如私有模块),可放入 web/modules/custom 目录,但不推荐长期使用。

移除模块时,先禁用并卸载(drush pmu MODULE_NAME),再执行:

  • composer remove drupal/MODULE_NAME

基本上就这些。坚持用 Composer 管理所有外部代码,配合 Git 忽略 vendor 和核心文件,只提交 composer.json 和 composer.lock,就能实现可复现的部署流程。


# js  # bootstrap  # git  # json  # composer  # require  # Token  # 数据库  # https  # 自定义  # 但不  # 移除  # 并安装  # 如果你  # 也会  # 就能  # 推荐使用  # 可通过  # 它能 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  百度浏览器网页无法复制文字怎么办 百度浏览器复制修复  再谈Python中的字符串与字符编码(推荐)  bootstrap日历插件datetimepicker使用方法  Android中AutoCompleteTextView自动提示  php json中文编码为null的解决办法  ,网页ppt怎么弄成自己的ppt?  网站制作免费,什么网站能看正片电影?  WordPress 子目录安装中正确处理脚本路径的完整指南  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  动图在线制作网站有哪些,滑动动图图集怎么做?  详解Huffman编码算法之Java实现  如何挑选最适合建站的高性能VPS主机?  如何确保西部建站助手FTP传输的安全性?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  如何打造高效商业网站?建站目的决定转化率  javascript如何操作浏览器历史记录_怎样实现无刷新导航  Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】  Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】  香港服务器WordPress建站指南:SEO优化与高效部署策略  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  奇安信“盘古石”团队突破 iOS 26.1 提权  如何选择PHP开源工具快速搭建网站?  javascript基于原型链的继承及call和apply函数用法分析  如何在香港免费服务器上快速搭建网站?  Python函数文档自动校验_规范解析【教程】  JavaScript如何实现类型判断_typeof和instanceof有什么区别  微信小程序 canvas开发实例及注意事项  Java类加载基本过程详细介绍  手机软键盘弹出时影响布局的解决方法  香港服务器部署网站为何提示未备案?  Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理  如何快速生成橙子建站落地页链接?  如何用VPS主机快速搭建个人网站?  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  Laravel如何自定义分页视图?(Pagination示例)  如何在局域网内绑定自建网站域名?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  Python文本处理实践_日志清洗解析【指导】  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  lovemo网页版地址 lovemo官网手机登录  laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析  DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解  HTML 中如何正确使用模板变量为元素的 name 属性赋值  Android仿QQ列表左滑删除操作  如何快速搭建虚拟主机网站?新手必看指南  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】