Composer path仓库默认是硬复制,仅当根项目composer.json中config设"symlink": true时才启用符号链接;验证需用ls -la查看vendor下是否含“->”,否则为复制模式。

默认就是硬复制,不用“禁用”——想关 symlink,得先确认它是不是被意外打开了。
为什么 vendor 里的本地包突然变成 symlink 了?
Composer 的 path 类型仓库默认行为是硬拷贝(copy),但只要项目根目录的 composer.json 中 config 段存在 "symlink": true,所有 type: "path" 的依赖都会自动走 symlink。这不是 per-package 控制的,而是全局开关。
- 检查你项目的
composer.json,看config下是否有"symlink": true - 如果用了
composer config --global symlink true,那所有项目都受影响(不推荐) - Windows 用户还可能因管理员权限缺失,导致 symlink 创建失败后 fallback 到 copy —— 表面像“禁用了”,实则是静默降级
如何确保 path 依赖一定走硬复制?
最稳妥的方式是显式关闭 symlink,并验证配置生效位置。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 在项目根目录
composer.json的config段写"symlink": false(注意不是删掉该字段) - 运行
composer update vendor/name或composer install,触发重安装 - 检查
vendor/vendor/name是否为真实文件夹(ls -la看不到->符号) - 不要依赖
composer config repositories.xxx命令来设 symlink,它不支持 options 字段;必须靠config.symlink
Windows 下 symlink 失败却没报错,怎么判断是否真在 copy?
Windows 默认禁止普通用户创建 symlink,Composer 会悄悄 fallback 到 copy 并只输出一行提示:Creating symlink for ... failed, falling back to copy —— 这行日志容易被滚动刷掉。
- 加
-v参数重跑:composer update -v,搜falling back - 确认当前终端是否以管理员身份运行(CMD/PowerShell)
- 或改用
cmd /c mklink /D手动测试能否建链接,排除系统策略限制 - 若确定环境不支持 symlink,就别配
"symlink": true,避免预期与实际不符
真正容易被忽略的是:symlink 开关只对 type: "path" 生效,对 Git 仓库、dist 包、VCS 类型完全无效;且一旦 vendor/ 里已有 symlink,composer update 不会自动把它转成 copy —— 必须先删掉对应目录再重装。

















