composer bump 并非 composer 官方命令,运行会报错“command 'bump' is not defined”;它常被误认为是内置命令,实则是某些团队在 composer.json 的 scripts 中自定义的别名。

composer bump 是什么命令?它根本不存在
composer bump 不是 Composer 内置命令,也不在官方文档或主流插件中。你运行它大概率会看到错误:Command "bump" is not defined.。这是最常踩的第一个坑:把别人封装的脚本、第三方插件或自定义 Makefile 里的别名,当成了 Composer 原生命令。
- 官方
composer命令列表里没有bump - 有些团队用
composer.json的scripts字段定义了"bump": "php bump.php"这类别名,但它不是通用能力 - 真正想“把版本约束更新为已安装的最低版本”,得靠组合操作,不是一条命令能解决的
想把 require 版本锁成当前已安装版本,该用哪个命令?
核心动作是:读取 vendor/composer/installed.json(或 composer show --installed 输出),提取已安装包的实际版本,再写回 composer.json 的 require 字段。官方没提供一键命令,但可用以下方式安全达成:
- 用
composer show vendor/package查当前安装版本(如composer show monolog/monolog输出2.10.0) - 手动编辑
composer.json,把"monolog/monolog": "^2.9"改成"monolog/monolog": "2.10.0" - 或用脚本批量处理(见下一条)
注意:直接写死具体版本号会失去语义化版本的弹性,后续 composer update 不会自动升级,除非你手动改回范围约束。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
有没有靠谱的自动化方案?推荐 composer-require-checker + 自定义脚本
真正落地时,没人手改几十个依赖。常见做法是写一个轻量 PHP 脚本(或用现成工具),读 composer.lock 并生成最小精确约束。例如:
<?php $lock = json_decode(file_get_contents('composer.lock'), true);
foreach ($lock['packages'] as $pkg) {
$name = $pkg['name'];
$version = $pkg['version'];
echo "composer require --no-update \"$name:$version\"\n";
}
- 运行后会输出一串
composer require --no-update命令,复制执行即可 - 加
--no-update是为了避免重复安装,只改composer.json - 别用
composer update vendor/package来“降级”到已安装版本——它只会按现有约束找兼容版本,不保证就是当前版本
为什么不能依赖 lock 文件自动同步 require?
composer.lock 记录的是解析后的精确版本,但 composer.json 的 require 是声明式约束。两者职责不同:
-
composer install以lock为准,不看require的写法 -
composer update以require为准,重新解析并更新lock - 所以即使
lock里已经是2.10.0,只要require写的是^2.9,下次update仍可能升到2.11.0
想让 require 和 lock 保持一致,必须显式重写 require 字段。这点容易被忽略:很多人以为 lock “生效”了,require 就不重要了——其实它决定了下次 update 的边界。










