composer 不支持临时添加依赖,所有依赖必须写入 composer.json;推荐用 composer require 自动写入并安装,或用 create-project 创建隔离沙盒测试。

不能直接临时添加依赖——Composer 的设计里没有“临时”这回事,所有依赖都必须写进 composer.json 才能被正确解析、安装和锁定。 但你可以绕过手动编辑文件,用命令行快速完成等效操作,且不破坏工作流。
用 composer require 命令自动写入并安装
这是最常用也最安全的方式:命令会自动修改 composer.json、更新 composer.lock,并下载包。它不是“临时”,但省去了手写 JSON 和校验格式的麻烦。
- 运行
composer require monolog/monolog:^2.0,就会把该包加到require区,并立即安装 - 加
--dev参数(如composer require --dev phpunit/phpunit)会写入require-dev,适合测试工具 - 如果项目已锁定了 PHP 版本或平台扩展,
composer require会检查兼容性,失败时明确报错,比如Your requirements could not be resolved - 别用
--no-update除非你清楚自己在跳过依赖解析——之后必须手动composer update,否则vendor/里没这个包
想“试用”又不想污染 composer.json?用 composer create-project 或独立目录
真要零写入主项目配置,就别走 require 流程。临时验证某个包是否可用,最快是另起一个最小环境。
- 运行
composer create-project --no-install vendor/package-name /tmp/test-pkg,再进目录跑composer install,完全隔离 - 或者直接
mkdir /tmp/pkg-test && cd /tmp/pkg-test && composer init -n && composer require vendor/package-name,几秒建好沙盒 - 注意:
composer install不会读取父项目的composer.json,所以不存在“继承依赖”这种事;每个目录都是独立作用域
误删了 composer.json 里的某行,怎么快速恢复?
不是“临时添加”的反向操作,但常被当成补救手段——其实靠 composer.lock 就能还原大部分信息。
-
composer show --installed能列出当前vendor/中已安装的所有包及其版本,但不含 require/dev 标记 - 更准的是解析
composer.lock:jq '.packages[] | select(.name == "monolog/monolog") | .version' composer.lock(需装jq),可确认实际安装版本 - 如果只记得包名,用
composer depends vendor/package-name查谁依赖它,反推它大概率在require还是require-dev里 - 别试图从
vendor/目录下读composer.json文件来拼主文件——子包的composer.json不反映你的项目声明关系
真正容易被忽略的是:哪怕只运行一次 composer require,也会触发整个依赖图重算,可能意外升级其他包。如果你只想加一个包,又担心牵连,务必先看一眼 composer outdated,心里有数再动手。










