Composer命令参数是关键开关:漏--dev致测试工具进生产,版本约束必带^或~(如^7.5),composer exec传参须用--分隔,--no-update可只改声明不安装,全局镜像被项目配置覆盖。

Composer 命令参数不是“选填项”,而是决定命令是否能跑通、装对、不埋雷的关键开关——漏掉 --dev 可能让测试工具进生产环境,少一个 -- 就会让 phpunit 报“command not found”。
composer require 的版本约束符必须带 ^ 或 ~
写 composer require guzzlehttp/guzzle:7.5 看似简洁,实际等价于 "7.5.0"(严格锁定),几乎找不到匹配包;正确写法是 composer require guzzlehttp/guzzle:^7.5(兼容 7.5.x)或 ~7.5.0(兼容 7.5.0–7.6.0)。
- 不加符号 → Composer 解析为精确版本,失败率极高
- 用
^更安全:支持向后兼容的小版本/补丁升级 - 想锁死某次
composer.lock的行为?先require再update --lock,别靠手改 JSON
composer exec 传参必须用双横线 -- 分隔
composer exec 后面的参数分两层:前面是给 Composer 自己的(如超时、工作目录),后面是给目标命令的,中间必须用 -- 隔开。漏掉它,Composer 就会把本该传给 phpunit 的 --filter=testLogin 当成自己的子命令去查。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- ✅ 正确:
composer exec phpunit -- --filter=testLogin - ❌ 错误:
composer exec phpunit --filter=testLogin(报错:Command "–filter=testLogin" is not defined) - 多个参数也一样:
composer exec phpstan analyse src/ -- --level=7 --no-progress -
--working-dir很少需要,除非你在 monorepo 子包里执行命令
开发依赖必须显式加 --dev,不能靠后期补
像 phpunit/phpunit、phpstan/phpstan、friendsofphp/php-cs-fixer 这类工具,一旦用 composer require xxx 而没加 --dev,就会被写进 require 区——上线部署时也会加载,可能引发冲突或性能问题。
- ✅ 正确:
composer require --dev phpunit/phpunit - ❌ 补救成本高:
composer remove phpunit/phpunit && composer require --dev phpunit/phpunit才能修正 - 项目已上线?检查
composer.json里require-dev是否为空,require里有没有不该出现的工具名 -
--no-update适合只改声明不立即安装:composer require symfony/console --dev --no-update
全局镜像和项目配置的优先级容易搞反
你用 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 设了国内镜像,但项目里 composer.json 有 "config": { "repo": { ... } },那全局设置就完全失效——项目配置是覆盖,不是合并。
- 验证方式:
composer config -g --list看全局值,composer config --list看当前项目值,对比同 key 是否一致 - 临时绕过项目配置:
composer config --global --list加--no-plugins --no-scripts并确保不在项目根目录下执行 - CA 证书或代理出问题?错误通常是
Could not fetch或SSL certificate problem,这类配置也走config -g,但要单独设github-oauth或http-basic
真正容易被忽略的是:所有 config 类操作,无论是全局还是项目级,都建议用命令行写入,而不是手动编辑 config.json——格式错一个逗号、多一个空格,Composer 下次运行就可能静默失败或覆盖你的修改。

















