composer安装的包源码默认在vendor/目录下,如monolog/monolog对应vendor/monolog/monolog/;需注意命名空间转路径、大小写及符号链接问题。

composer 查看已安装包的源码在哪儿
Composer 安装的包默认放在 vendor/ 目录下,路径是确定的,不是“需要查”,而是直接去翻。比如你装了 monolog/monolog,它的源码就在 vendor/monolog/monolog/ 里,结构和 GitHub 上一致。
常见错误现象:用 composer show monolog/monolog 只看到描述、版本、依赖,但没输出路径——这不是 bug,是设计如此;这个命令本来就不负责告诉你文件在哪。
- 最稳的方式是直接进
vendor/找对应命名空间的目录(注意斜杠转为目录分隔符,foo/bar-baz→vendor/foo/bar-baz/) - 如果用了符号链接(比如
composer install --no-dev后又删了 dev 包),部分子目录可能为空,别误以为没装上 - Windows 下路径大小写不敏感,但实际包名是小写的,别手抖输成
Vendor/Foo/Bar去找
composer require 时怎么指定 Git 仓库地址
不是所有包都发布在 Packagist,有些内部库或未提交的 PR 需直连 Git。Composer 支持用 VCS 类型仓库替代包名,但必须满足两个硬条件:仓库根目录有 composer.json,且里面定义了 name 字段(格式为 vendor/name)。
使用场景:想试一个 GitHub 上的 fork 分支,或者拉公司内网 GitLab 的私有组件。
- 运行
composer require "username/repo:dev-main",前提是该 repo 的composer.json里写了"name": "username/repo" - 如果仓库名和
composer.json里的name不一致,会报错:Could not find package username/repo—— 这时候不是网络问题,是名字对不上 - 私有仓库需提前配置
auth.json或用 SSH URL(如git@github.com:user/repo.git),HTTPS URL 若需 token,请确保在auth.json中配好
为什么 composer install 后 vendor 里没代码,只有一堆空目录
这是典型的 VCS 配置缺失或权限问题,不是 Composer 坏了。Composer 默认只从 Packagist 下 zip 包,除非你显式告诉它“这个包得走 Git”,否则不会 clone 仓库。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
性能影响:走 Git 比下载 zip 慢,尤其大仓库或网络差时,且每次 composer install 都要 fetch,没缓存机制。
- 确认
composer.json里该包的版本约束是否含dev-前缀(如"dev-master"),只有这种才触发 Git 克隆 - 检查是否开了
preferred-install配置为"dist",这会强制跳过 Git,即使你写了dev-也无效 - 运行
composer install -v看详细日志,如果出现Cloning [commit hash]就说明走 Git;如果只有Downloading...,那肯定没走源码
用 composer 拉 Git 仓库时怎么指定分支或 commit
分支名、tag、commit hash 都能用,但写法有区别,错一个字符就 fallback 到 Packagist 或报错。
参数差异:分支用 dev-branch-name,tag 用 v1.2.3 或 1.2.3,commit 用完整 40 位 hash(dev-1a2b3c4...)或短 hash(dev-1a2b3c4)加 dev- 前缀。
-
composer require "myorg/mylib:dev-feature/login"→ 拉feature/login分支 -
composer require "myorg/mylib:v2.1.0"→ 拉 tag,前提是该 tag 在 Git 里存在且composer.json版本匹配 -
composer require "myorg/mylib:dev-abc1234"→ 拉指定 commit,注意必须是完整 commit,短 hash 在某些旧版 Composer 里不支持
最容易被忽略的是:Git 仓库里没有打 tag,却写了 v1.0.0,结果 Composer 去 Packagist 找同名包顶包——它不会报错,只会静默换源。确认方式:看 vendor/myorg/mylib/composer.json 里的 version 是否和你预期一致。










