必须用 composer require 安装模块,手动复制、后台启用或 drush pm:enable 均不可替代;装不上时需检查三件事:是否在项目根目录、drupal/core 版本是否与模块兼容、是否用 composer why-not 查阻断包,严禁删 composer.lock。

必须用 composer require 安装模块,任何手动复制、后台启用、drush pm:enable 都不能替代它——否则自动加载失败、升级崩盘、CI 构建不一致是必然结果。
为什么 composer require drupal/foo 装不上?查这三件事
不是命令写错,而是环境或配置卡住了。最常踩的坑不是语法,而是上下文。
- 确认当前目录是项目根目录(含
composer.json和vendor/),不是web/或modules/子目录 - 检查
composer.json里是否锁死了drupal/core版本(例如"drupal/core": "^9.5"),而你要装的模块只支持^10.0—— 此时会报Conclusion: don't install drupal/foo x.x - 运行
composer why-not drupal/core:10.1.0查具体哪个包在阻止升级;别直接删composer.lock,那会破坏可重现性
示例:想装 drupal/config_ignore 却失败,可能是因为它要求 drupal/core >= 10.0.0,而你项目还停在 9.5.x。这时得先升级 core:composer require drupal/core-recommended:^10.1.0 --update-with-dependencies,再装模块。
composer remove drupal/foo 之后模块还在?顺序错了
Composer 不负责 Drupal 运行时状态,只管代码和依赖。卸载模块必须分两步,缺一不可:
- 先在 Drupal 后台禁用并卸载(或用
drush pm:uninstall foo),清空配置、删除数据库表 - 再执行
composer remove drupal/foo,从composer.json删除条目、更新composer.lock、删掉web/modules/contrib/foo
反着来(先 remove 再卸载)会导致残留配置、drush cr 报错、甚至页面白屏。如果已经错序,补救方式是:先手动在后台卸载,再 composer install 拉回模块,再按正确顺序重走一遍。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
主题和第三方库怎么装?路径和类型要显式声明
安装主题和库不能只靠 composer require drupal/bootstrap 就完事——很多主题(如 Bootstrap、Zurb Foundation)依赖前端资产(CSS/JS),默认不会放进 web/libraries/ 目录。
- 装主题本身:
composer require drupal/bootstrap:4.2.0(进web/themes/contrib/bootstrap) - 装配套前端库:
composer require bower-asset/bootstrap-sass:^3.4,但需配合oomphinc/composer-installers-extender插件和installer-paths配置,否则文件会散落在vendor/里,主题找不到 - 关键配置段要加进
composer.json的extra:
"extra": {
"installer-types": ["bower-asset", "npm-asset"],
"installer-paths": {
"web/libraries/{$name}": ["type:drupal-library"],
"web/libraries/bootstrap": ["bower-asset/bootstrap-sass"]
}
}
漏掉 installer-types 或路径映射错误,composer install 就不会把库放到 web/libraries/ 下,主题启用后直接报“library not found”。
部署时 vendor/ 该不该提交?Git 忽略它是铁律
vendor/ 是生成物,和 node_modules/ 一样必须进 .gitignore。生产环境靠 composer install --no-dev --optimize-autoloader 重建,而不是靠 Git 同步。
- 提交
vendor/会导致仓库臃肿、diff 失控、安全扫描误报 - 不提交
composer.lock才真会出问题——它锁定每个包的确切版本,保证开发、测试、生产三方完全一致 - CI 流程中必须包含
composer validate(校验 JSON 格式)和composer outdated --direct(查直连依赖是否过期)
最容易被忽略的是:web 服务器文档根必须指向 web/,且 composer.json、composer.lock、vendor/ 等敏感目录绝不能被 HTTP 访问——这些不在 Composer 管理范围,但一旦暴露,等于交出项目全部依赖图谱。










