答案:composer update --dev 会更新 composer.json 中 require-dev 区块显式声明的包(如 phpunit/phpunit),但不更新 require 下的运行时依赖,也不自动升级这些 dev 包的间接依赖;若需连带更新整个 dev 依赖链,须加 --with-all-dependencies。

composer update --dev 会更新哪些包?
它只更新 composer.json 中 require-dev 区块显式声明的包,比如 phpunit/phpunit、mockery/mockery,但不会动 require 下的运行时依赖,也不会自动升级这些 dev 包所依赖的间接包(如 phpunit 依赖的 sebastian/exporter 仍按 composer.lock 旧版本装)。
常见错误现象:composer update --dev 后 phpunit 升了,但跑测试报 Class not found: Sebastian\Exporter\Exporter —— 这不是没装对,是它的子依赖没跟着升。
- 想连带更新 dev 包的全部依赖链,加
--with-all-dependencies:composer update --dev --with-all-dependencies - 如果只想升某几个 dev 包(比如只升
phpunit和pestphp/pest),直接列出来:composer update phpunit/phpunit pestphp/pest --dev -
--dev不等于--no-dev的反向操作;它不跳过require,只是额外激活require-dev的解析
为什么 composer update --dev 没升到最新版?
根本原因还是版本约束卡住了。比如 "phpunit/phpunit": "^9.6" 就不会装 v10.x,哪怕官网已发布;"laravel/pint": "1.*" 也只会停留在 1.x 分支。
使用场景:日常开发中修 CI 脚本、适配新 PHP 版本、或补安全漏洞,但又不想牵扯主业务逻辑依赖。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 先看能升什么:
composer outdated --dev,它只扫描require-dev声明的包 - 带
!标记的是主版本跃迁(如phpunit/phpunit 9.6.15 → 10.5.1 !),必须手动改composer.json约束再跑 - 如果
outdated --dev没输出,检查是否启用了"prefer-stable": true—— 它会过滤掉所有 alpha/beta/rc 版本
全局 dev 工具怎么更新?
全局安装的 dev 类工具(如 laravel/installer、phpstan/phpstan)不在项目 composer.json 里,得用 composer global 子命令。
常见错误现象:本地敲 phpstan 报错“command not found”,或版本老得连 PHP 8.2 都不支持 —— 很可能你忘了它装在全局,而不是当前项目。
- 查已装全局包:
composer global show --direct - 升单个:
composer global require phpstan/phpstan:^1.10 --update-with-dependencies - 升全部:
composer global update(它读的是~/.composer/composer.json,不是项目里的) - 镜像加速很重要:全局配置国内镜像后,
global update才不会卡在packages.json请求上。执行:composer config -g repo.packagist composer https://packagist.phpcomposer.com(注意:该镜像域名需按你实际使用的填)
更新后 vendor/autoload.php 失效怎么办?
90% 的 “Class not found” 不是包没装成功,而是自动加载映射没刷新。尤其 require-dev 包常含命令行工具或测试类,它们的命名空间注册依赖 autoload 配置重生成。
性能影响:加 -o 参数启用优化模式,生成静态映射表,比默认的 PSR-4 动态查找快得多。
- 立刻执行:
composer dump-autoload -o - 如果用了自定义 autoload(比如
files或classmap),确保对应文件路径没被误删或移动 - CI 环境中,别省这一步 ——
composer install不会自动触发dump-autoload,除非你显式加--optimize-autoloader










