必须启用windows长路径支持并关闭classmap-authoritative模式:先通过组策略或注册表开启win32长路径,重启终端;再执行composer config --global classmap-authoritative false;最后清理冗余语言包和缓存。

Windows系统长路径支持必须先开
不启用系统级长路径,其他所有操作都是白忙——Composer生成的autoload_static.php、vendor/composer/autoload_classmap.php里全是绝对路径,一旦嵌套过深(比如vendor/phpunit/phpunit/tests/_files/very/deep/nested/structure/),就会触发The filename or extension is too long错误。
必须做两件事:
- 组策略路径:打开
gpedit.msc→ 计算机配置 → 管理模板 → 系统 → 文件系统 → 启用“Win32长路径” - 家庭版用户改注册表:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem下新建DWORD (32-bit)值LongPathsEnabled,设为1 - 改完必须重启命令行终端(CMD/PowerShell/Git Bash)——旧进程不会继承新设置
classmap-authoritative模式要关掉
Composer 2.2+ 默认开启 classmap-authoritative,它会扫描整个 vendor 目录生成类映射,哪怕你把 vendor 挪到 D:/v,只要包里有深度嵌套结构(如 tests/ 或 src/ 子目录),完整路径仍可能突破 260 字符限制。
关掉它才是治本:
composer config --global classmap-authoritative false- 或者在项目根目录运行:
composer config classmap-authoritative false - 顺手清掉旧缓存:
composer dump-autoload --optimize之前先删vendor/composer/autoload_*.php
中文语言包冗余得手动裁剪
很多包(比如 laravel/framework、symfony/translation)默认带 40+ 种语言文件,lang/、resources/lang/、locale/ 下的非中文目录占几 MB,但根本不用。它们不是 Composer 的问题,是包发布时打包太全。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
靠 --no-dev 或 --optimize-autoloader 删不掉这些——它们只影响加载逻辑,不删文件。
- 推荐加清理脚本到
composer.json:"post-install-cmd": ["@php -r \"array_map('unlink', glob('vendor/**/lang/!(zh*)', GLOB_ONLYDIR | GLOB_BRACE));\""] - 更稳妥用工具:
composer require --dev janoside/composer-cleaner,配白名单只留zh和en - 注意:有些包(如
spatie/laravel-translatable)把翻译放在resources/lang/vendor/xxx,需额外写脚本处理
别迷信 vendor-dir 配置
把 vendor 改到短路径(比如 D:/v)确实能缓解部分问题,但不能解决根本——Composer 自动生成的 autoload 文件里依然拼出完整绝对路径,且某些包自身结构就深,比如 phpunit/phpunit 的测试文件路径本身就超限。
真正有效的是组合动作:
- 系统长路径开关 ✔️
-
classmap-authoritative false✔️ - 删冗余语言包 ✔️
- 再加
--no-dev --optimize-autoloader减少 autoload 阶段内存和路径压力 ✔️
单独改 vendor-dir 只是给症状贴创可贴,容易漏掉 autoload 文件里的路径爆炸点。










