composer install 默认将包安装到当前项目根目录下的 vendor 目录,无法通过配置修改;唯一官方支持的变通方式是临时设置环境变量 COMPOSER_VENDOR_DIR 指定 vendor 路径,且仅对当次命令生效。

composer install 默认装到 vendor 目录,改不了
Composer 没有“全局安装路径配置”这种东西。composer install 总是把包装进当前项目根目录下的 vendor 文件夹,这是硬编码行为,不能通过配置或命令行参数绕过。想换位置?不是改路径,而是换项目根目录的位置。
用 COMPOSER_VENDOR_DIR 环境变量临时指定 vendor 位置
这是唯一被官方支持的、能改变 vendor 目录位置的方式。它只影响当前命令执行时的行为,不修改任何全局设置。
- Linux/macOS:运行前加
COMPOSER_VENDOR_DIR=/path/to/my-vendor composer install - Windows(cmd):先执行
set COMPOSER_VENDOR_DIR=C:\my\vendor,再运行composer install - Windows(PowerShell):用
$env:COMPOSER_VENDOR_DIR="C:\my\vendor",再运行composer install
注意:COMPOSER_VENDOR_DIR 只控制 vendor 目录位置,不会影响 composer.json 或 composer.lock 的读取位置——它们仍必须在当前工作目录下。
为什么不要用 symlink 或 --no-scripts 来“伪装”路径
有人试过 ln -s /real/vendor ./vendor 或者删掉 vendor 后靠 --no-scripts 躲开 autoload 生成,结果多半是 autoload 失败、类找不到、CI 报错。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
-
autoload信息写死在vendor/autoload.php和vendor/composer/autoload_*.php里,路径是相对的,symlink 不会重写这些路径 -
--no-scripts会跳过dump-autoload,导致新包的类根本不可用 - 很多包的
post-install-cmd脚本会检查vendor是否在预期位置,失败就中止
composer global require 无法指定目录,但可以改 COMPOSER_HOME
composer global require 的安装目标是 COMPOSER_HOME 下的 vendor,而 COMPOSER_HOME 默认是 ~/.composer(Linux/macOS)或 %APPDATA%\Composer(Windows)。你可以改它,但要改得彻底:
- 设环境变量:
COMPOSER_HOME=/my/composer/home - 确保该目录下有
auth.json(如有私库)、composer.json(可选) - 首次运行
composer global install前,先手动建好/my/composer/home/vendor或让它自动创建
改完 COMPOSER_HOME 后,所有 global 命令都走新路径,但普通项目仍不受影响——这点容易混淆,很多人以为改了这里就能影响 composer install,其实不能。
真正难的不是换路径,而是换路径之后还要让 autoload、脚本、IDE 索引、CI 构建全部认得出来。大多数时候,与其折腾路径,不如接受 vendor 就该在项目里——它本来就是项目依赖的快照,挪走反而破坏可复现性。

















