最稳方式是在 composer.json 中配置 "config": {"vendor-dir": "xxx"};-d 参数仅改变查找 composer.json 的路径,不影响 vendor 写入位置,且需同步更新 autoload.php 引用、bin-dir、ide 索引及 ci 脚本等。

改 vendor 目录位置,只有一条路最稳:在项目根目录的 composer.json 里写死 "config": {"vendor-dir": "xxx"}。其他方式要么不生效,要么埋雷。
为什么 composer install -d /path 不会改变 vendor 写入位置
-d 参数只是告诉 Composer 去哪找 composer.json 和 composer.lock,它完全不影响 vendor 的写入路径。你执行 composer install -d /tmp/myapp,等价于先 cd /tmp/myapp 再运行 composer install——vendor 还是照常生成在 /tmp/myapp/vendor(或已配置的 vendor-dir)。
常见踩坑场景:
- CI 脚本里滥用
-d,但没同步配config.vendor-dir,结果部署后require 'vendor/autoload.php'找不到文件 - 误以为加了
-d就能“临时切换安装目标”,实际 vendor 根本没挪地方
改了 config.vendor-dir 为什么 autoload 还报错
vendor/autoload.php 是生成时写死路径的入口文件。你改了 vendor-dir,但没重建整个 vendor 结构,旧文件还在原地,PHP 还在找原来的路径。
必须做这三件事:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 删掉现有
vendor目录(和composer.lock,如果想彻底重装) - 执行
composer install或composer update(dump-autoload不够,它只刷新类映射) - 代码里所有
require 'vendor/autoload.php'都得同步改成新路径,比如require 'third-party/autoload.php'
installer-paths 怎么让特定包装到非 vendor 目录
这是另一套机制,用于把某些 type 的包(如 wordpress-plugin、drupal-module)装到 wp-content/plugins/ 这类路径,和 vendor-dir 无关。
生效前提非常严格:
- 项目必须已通过
composer require composer/installers安装插件(且版本 ≥ 2.0) - 目标包自己的
composer.json中"type"字段必须匹配你配置的规则(比如"type": "wordpress-plugin") - 必须删掉整个
vendor和composer.lock,再跑composer install——已有包不会被重排 -
extra.installer-paths中的路径必须是相对路径,不能以/开头,例如:"wp-content/plugins/{$name}/": ["type:wordpress-plugin"]
本地 path 仓库为啥加载不了
composer install 从不读 repositories 配置,它只按 composer.lock 里记录的来源安装。哪怕你刚在 composer.json 里加了 "type": "path",执行 install 也毫无反应。
要让本地包生效,必须:
- 删掉
composer.lock - 运行
composer update或直接composer require vendor/name -
url必须是相对路径(如"../my-package"),绝对路径、file://、~全部静默失效 - 本地包目录必须有 Git commit(至少一个),否则 Composer 拒绝加载
最易忽略的是:改完本地包的 composer.json 或代码后,主项目需手动运行 composer dump-autoload 刷新自动加载器——符号链接本身不会自动更新类映射。










