




Drupal模块不能在自身目录执行composer require,因其composer.json仅含元信息且不参与依赖解析;必须在项目根目录添加扩展依赖并更新autoload。
Drupal 模块本身不直接声明 composer 依赖,安装扩展依赖必须通过项目根目录的 composer.json 显式添加,而不是在模块内部操作。
composer require
Drupa
l 模块(如 webform、paragraphs)是纯代码包,其 composer.json 仅用于包元信息(name、type、autoload),不参与依赖解析。运行 composer require 在模块目录下会报错:Could not find a composer.json file in /path/to/module 或触发错误的依赖树合并。
composer.json
vendor/autoload.php
composer.json
以给 drupal/jsonapi 模块添加一个用于处理 JSON 的 PHP 库 spatie/json-api-serializer 为例:
symfony/* 版本)composer require spatie/json-api-serializer:^3.0
composer.lock 是否更新,并运行 drush cr清除缓存(确保新类可被自动加载)
drupal-module 类型干扰某些库(如 guzzlehttp/guzzle)在 Drupal 核心或已有模块中已声明,直接 require 可能触发 Root package cannot require itself 或 could not be resolved to a compatible set of packages 错误。
composer show guzzlehttp/guzzle查看当前已安装版本
--with-all-dependencies 谨慎升级:composer require guzzlehttp/guzzle:^7.8 --with-all-dependencies
drupal-module 类型包加 require —— 它们不是 Composer 的依赖目标,而是 Drupal 启用对象最易被忽略的一点:所有扩展依赖必须能在 vendor/autoload.php 中被加载,而这个文件只由根 composer.json 控制。模块开发者不会、也不应替你运行 composer install。你得自己管好项目级依赖树。