composer本身无独立废弃包检查命令,仅在install/update时通过packagist api查"abandoned"字段触发警告;outdated不请求api,故不显示废弃信息;最准验证方式是grep -a1 -b1 '"abandoned"' composer.lock。

Composer 本身没有单独的“检查废弃包”命令,它只在 composer install 或 composer update 过程中顺带触发废弃提示——你得让 Composer 主动去查 Packagist 元数据,才会看到 is abandoned 警告。
为什么 composer outdated 不显示废弃信息
这个命令只比对版本号,不请求 Packagist API,所以完全不看 "abandoned" 字段。哪怕一个包已被作者标记为废弃,composer outdated 也照常把它列为“可更新”,甚至可能推荐安装它的最后一个废弃版本。
-
composer outdated --all只告诉你“有新版本”,不告诉你“这包已死” - 想确认废弃状态,必须触发元数据拉取:运行
composer install --dry-run或composer update --dry-run - 如果项目已锁死(
composer.lock存在),install更轻量;若想覆盖 lock 中的废弃快照,用update
怎么快速确认某个包是否被废弃
最准的方式不是靠命令行实时提示,而是直接查 composer.lock 里写死的快照:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 运行
grep -A1 -B1 '"abandoned"' composer.lock,能立刻看到所有已被标记废弃的包及其替代建议 - 如果输出为空,不代表安全——可能是旧 lock 文件没更新过,或该包还没被作者设置
abandoned字段 - 要验证最新状态,临时切回官方源:
composer config -g repo.packagist composer https://packagist.org,再跑一次composer update --dry-run
CI/CD 里怎么不让废弃警告被忽略
默认警告不中断流程,exit code 是 0,shell 的 && 和 CI 步骤都会继续执行,非常危险:
- Composer 2.5+ 支持
--fail-on-warning,加在 install/update 后即可让废弃提示导致构建失败:composer install --fail-on-warning - 低版本可用后置校验:
composer install 2>&1 | grep -q "is abandoned" && exit 1 || true - 注意:只有
install和update会触发该检查,require不会——你composer require foo/bar引入一个包,它依赖的废弃子包可能悄无声息地进来了
真正容易被忽略的是 lock 文件里的废弃字段:它是一次性快照,不会随 Packagist 页面更新而自动刷新。每次 composer update 才会重抓元数据并覆盖旧值,所以别只信页面右上角的「Replaced by」横幅,得同步更新 lock。










