支持,但仅限composer 2.2+版本;--repository接受json格式仓库定义,临时替换官方源且仅本次生效,而--repository-url不被create-project识别,强行使用会报错或失效。

create-project 支持 --repository 吗?
支持,但仅限于 Composer 2.2+ 版本;低于该版本会直接忽略参数或报错 --repository 未知选项。实际执行时,它会临时替换 Packagist 官方源,只对本次命令生效,不改动全局配置。
常见错误现象:Command "create-project" is not defined. 或 Unknown option "--repository" —— 很可能你用的是 Composer 2.1 或更老版本,升级即可:composer self-update。
--repository 和 --repository-url 有什么区别?
--repository 是 Composer 2.2 引入的统一参数名,接受一个 JSON 格式仓库定义(可为 URL 或完整对象),而 --repository-url 是旧版别名,仅支持纯 URL 字符串。但 create-project 命令**不识别 --repository-url**,强行使用会报错或静默失效。
正确写法只有这一种:composer create-project laravel/laravel myapp --repository=https://mirrors.aliyun.com/composer/。
注意:这个 URL 必须是镜像站的根地址(如 https://mirrors.aliyun.com/composer/),不能带 /packages.json 或其他路径,否则会 404。
为什么加了 --repository 还卡在 “Loading composer repositories”?
这不是镜像没生效,而是镜像站本身不可达或返回非标准响应。国内常用镜像中,https://packagist.phpcomposer.com 已停用,https://packagist.proxy.bilibili.co/ 有时不稳定,推荐优先用 https://mirrors.aliyun.com/composer/ 或 https://mirrors.tuna.tsinghua.edu.cn/composer/。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
验证是否真走镜像:加 -vvv 参数运行,观察日志里实际请求的域名 —— 别只信 composer config -g repo.packagist 的输出,那个只管全局配置,不影响 --repository 临时行为。
容易踩的坑:
- Shell 中未用双引号包裹含
*的版本号,比如composer create-project foo/bar . 1.*→*被 shell 展开成当前目录文件列表,导致No such file or directory - 目标目录已存在且非空 → 报错
Destination folder already exists,哪怕只是个空.git目录也不行 - 私有镜像站未同步最新元数据 → 拉不到新发布的包版本,表现为
Could not find package xxx,此时需切回官方源或确认镜像同步状态
CI/CD 脚本里能不能靠 --repository 快速切源?
不能。CI 环境中,create-project 命令若依赖交互式模板(如 Laravel 的 artisan key:generate 自动触发),必须配 --no-interaction;而 --repository 在某些 CI 镜像(如官方 composer:latest)里默认不可用,因为基础镜像仍基于旧版 Composer。
稳妥做法是分两步:
composer config -g repos.packagist composer https://mirrors.aliyun.com/composer/composer create-project laravel/laravel myapp --no-interaction --no-dev
这样既兼容旧版本,又避免参数被忽略。临时参数看着方便,但在自动化流程里,显式配置 + 显式清理(composer config -g --unset repos.packagist)才真正可控。










