Windows下composer create-project默认不走symlink流程,而是强制使用--prefer-dist下载解压dist包,因此不会报symlink错误;仅当显式添加--prefer-source且涉及path仓库时才可能触发软链接创建。

Windows 下 composer create-project 默认不创建符号链接,也不尝试 fallback 到 symlink —— 它压根不走 symlink 流程,而是直接下载 dist 包并解压。 这和 composer install 的行为完全不同,别被报错误导去查权限或开开发者模式。
为什么 create-project 不报 symlink 错误
create-project 的设计目标是“从零初始化一个新项目”,它默认使用 --prefer-dist 模式(即下载压缩包 + 解压),不依赖 vendor 目录已有结构,也完全绕过 vendor/bin 软链生成环节。所以你不会看到 Failed to create symbolic link 报错——那类错误只出现在 install 或 update 阶段。
- 它不读取当前目录下的
composer.lock,也不复用本地~/.composer/cache中的 symlink 缓存 - 即使项目
composer.json里写了"preferred-install": "source",create-project仍会忽略该配置,强制走 dist - 除非你显式加
--prefer-source,否则它根本不会触发 git clone,自然也不会碰到 symlink 权限问题
什么时候 create-project 会意外触发 symlink 行为
只有两种情况会让 create-project 涉及符号链接:
- 你用了
--prefer-source参数,且目标包类型是path仓库(比如本地开发中的"type": "path")——这时 Composer 会尝试对../my-package建软链,但 Windows 下大概率失败 - 项目模板本身在
post-create-project-cmd脚本里手动调用了symlink()(极少见,多见于定制化脚手架)
遇到后者,错误信息会明确指向那个脚本文件,而不是 Composer 自身;前者则应直接删掉 --prefer-source 或改用 --prefer-dist(后者是默认值,不用写)。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
Windows 下安全运行 create-project 的实操建议
多数人卡住不是因为 symlink,而是路径过长或网络超时。真正要盯的是这两点:
- 避免在
C:\Users\YourName\Documents\GitHub\...\deep\nested\path下执行 —— 改用C:\proj\myapp这类短路径,否则解压 zip 时可能触发 Windows MAX_PATH 限制 - 国内用户必须配镜像源,否则
Loading composer repositories...会卡死:运行composer config -g repo.packagist composer https://packagist.phpcomposer.com(或阿里、腾讯镜像) - 如果仍卡在 “Installing dependencies from lock file”,说明
composer.lock里某些包指定了source安装方式 —— 加--prefer-dist强制覆盖,或删掉 lock 文件重来
想让 create-project 初始化后自动启用 symlink 怎么办
不能。这不是 create-project 的职责。它的输出是一个完整、可运行的副本。若你后续要在该目录下对接本地 path 包并希望用 symlink,得等项目建好后,再单独跑 composer require vendor/name --repository-url=../my-local-package,并确保已启用开发者模式或改用 WSL/Git Bash 环境。
最常被忽略的一点:很多人以为 create-project 后立即 composer install 就能触发 symlink,但其实第一次 install 仍会走 dist —— 必须先删掉 vendor/ 和 composer.lock,再明确加 --prefer-source 或配好 "prefer-dist": false 才行。

















