composer默认将依赖安装到项目根目录下的vendor/,但可通过composer_vendor_dir环境变量(优先级最高)或composer.json中config.vendor-dir配置更改路径,后者自2.0起已废弃并触发警告。

composer install 默认把依赖装进项目根目录下的 vendor/,但有时你得换地方——比如共享主机不让你在网站根目录写入、想统一管理多个项目的依赖、或者要适配特定部署结构。改路径本身不难,但直接硬改或临时挪动会埋坑。
用 COMPOSER_VENDOR_DIR 环境变量最稳妥
这是 Composer 官方支持的机制,优先级高、无需改配置文件、适合 CI/CD 或多环境切换。
- Linux/macOS 下运行前设好:
COMPOSER_VENDOR_DIR=/path/to/my-vendor composer install - Windows CMD:
set COMPOSER_VENDOR_DIR=C:\myproject\deps && composer install - PowerShell:
$env:COMPOSER_VENDOR_DIR="D:\shared\vendor"; composer install - 注意:该变量只影响当前命令执行过程,不会污染全局,也不写入
composer.json - 如果路径含空格或特殊字符,务必用引号包裹(如
COMPOSER_VENDOR_DIR="/opt/my libs/vendor")
在 composer.json 里配 config.vendor-dir
适合长期固定路径的项目,所有协作者和部署流程都会遵循这个设置。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 编辑项目根目录的
composer.json,在config段加字段(没有就新建):
{
"config": {
"vendor-dir": "lib/vendor"
}
}
- 路径是相对于
composer.json所在位置的,lib/vendor会生成在项目子目录下 - 改完后必须删掉现有
vendor/和composer.lock,再跑composer install,否则旧包仍留在原处 - 不建议用绝对路径(如
/var/www/vendor),会导致协作和部署失败
为什么别碰 composer global config 改 vendor-dir
全局配置里的 vendor-dir 只影响 composer global require 安装的命令行工具(比如 laravel/installer),跟项目依赖完全无关。
- 执行
composer global config vendor-dir /tmp/global-vendor不会改变你当前项目的vendor/ - 误设反而可能让本地开发时
composer global list出错或找不到已安装的全局命令 - 查当前全局 vendor 路径用:
composer global config home(它指向的是全局vendor/的父目录)
路径变更后要注意 autoload 和部署脚本
Composer 自动更新 vendor/autoload.php 的路径逻辑,但你的代码或部署工具未必能自动感知。
- 如果手动
require了vendor/autoload.php,记得同步改路径,例如从require 'vendor/autoload.php';改成require 'lib/vendor/autoload.php'; - 某些部署工具(如 Capistrano、Deployer)硬编码了
vendor/,需检查其配置是否允许传参或覆盖 -
composer dump-autoload -o生成的优化文件仍放在新 vendor 目录下,但如果你用了--classmap-authoritative,确保所有类文件路径没因移动而失效
真正麻烦的不是改路径这一步,而是后续所有对 vendor/ 的硬编码引用——包括 IDE 配置、PHPStan 分析路径、测试引导文件、甚至 Docker COPY 指令。改之前先 grep 一遍整个项目里出现的 vendor 字符串。










