composer 2.0+ 已彻底移除 config.vendor-dir 配置,唯一有效方式是通过环境变量 composer_vendor_dir 控制 vendor 目录位置,且需手动更新所有硬编码路径和相关配置。

Composer 没有所谓“模型位置”或“变换参数”的概念——你看到的可能是对 vendor 目录、缓存路径或全局包安装位置的误称。真正能调整的只有三类路径:依赖安装目录(vendor)、Composer 自身配置/缓存目录(COMPOSER_HOME)、全局命令包目录(COMPOSER_GLOBAL_DIR)。
composer.json 里写 config.vendor-dir 已彻底失效(Composer 2.0+)
如果你在 composer.json 中加了 "config": {"vendor-dir": "lib/vendor"},它不会起作用,还会触发警告:The "config.vendor-dir" option is deprecated, use the "COMPOSER_VENDOR_DIR" environment variable instead.
这不是配置没生效,而是 Composer 启动时直接跳过该字段。从 Composer 2.0 开始,这个键已被硬性移除,任何版本号 ≥ 2.0 的安装器(当前主流均为 2.4.x 或 2.5.x)都会忽略它。
- 运行
composer diagnose会明确列出这条配置已废弃 - 即使
composer install成功执行,vendor/仍会出现在默认位置 - 旧教程里复制的 JSON 片段现在属于无效代码,别再用
改 vendor 目录唯一可靠方式:环境变量 COMPOSER_VENDOR_DIR
它优先级最高,对所有命令(install、update、require)都生效,且不依赖项目配置是否存在。
Linux/macOS 临时设置:
COMPOSER_VENDOR_DIR=third-party composer install
Windows CMD:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
set COMPOSER_VENDOR_DIR=third-party && composer install
PowerShell:
$env:COMPOSER_VENDOR_DIR="third-party"; composer install
- 路径可以是相对路径(如
third-party),也可以是绝对路径(如/var/www/myapp/third-party) - 但不要写成
/third-party或D:\third-party这类以盘符或/开头的写法,Windows 下可能解析失败 - 改完后必须手动删掉旧
vendor目录,否则 autoload 和 bin 脚本仍指向旧结构
COMPOSER_VENDOR_DIR 不会自动修复你的代码引用
环境变量只控制包安装到哪,不负责更新你项目中任何一行硬编码路径。
-
require 'vendor/autoload.php'得改成require 'third-party/autoload.php' - Laravel 的
public/index.php、Symfony 的public/index.php或自定义 bootstrap 文件里显式引入 autoload 的地方,全得人工改 - IDE(如 PhpStorm)不会自动识别新路径,需右键新目录 → Mark as → Sources Root
- Dockerfile 或 CI 脚本里若有
COPY vendor/或RUN composer install,也要同步调整 COPY 目标或确认构建上下文
想把 Composer 自身配置挪出 C 盘?用 COMPOSER_HOME
这和 vendor 无关,但它才是影响磁盘空间占用的关键项:它控制 auth.json、cache/、plugins/、global/ 等 Composer 自身数据的存放位置。
Windows 上设为 D 盘:
set COMPOSER_HOME=D:\composer-home
macOS/Linux:
export COMPOSER_HOME="$HOME/.composer-disk-d"
- 设完后重启终端或重载 shell 配置(如
source ~/.zshrc) -
composer global list和composer cache-clear都会走新路径 - 注意:这不会影响任何项目的
vendor,只是把 Composer 的“个人文件柜”搬走
最容易被忽略的是:很多部署脚本或框架启动逻辑里,vendor/autoload.php 是写死的。环境变量改了,路径就断了——没有自动映射,也没有 fallback。你得亲手去翻每一处 require、include、自动加载注册点,以及所有 CI/CD 配置里的路径引用。










