composer search 不支持按 Tag 搜索,仅匹配包名和描述;需调用 Packagist API(如 curl -s "https://packagist.org/search.json?tags=cache")并用 jq 过滤,且 tags 参数只支持单值、英文小写、无分页。

composer search 命令不支持按 Tag 搜索
直接用 composer search 查标签是行不通的——它只匹配包名和描述文本里的关键词,tags 字段(比如 laravel、cache、psr-4)根本不在搜索范围内。你输 composer search cache,搜出来的可能是包名含 cache 的,但未必真带 cache 标签,也可能是描述里写了“this package caches things”这种模糊匹配。
真正能查 Tag 的方式:调用 Packagist API 手动过滤
Packagist 官方 API 提供了按 type 和 tags 精确筛选的能力,但需要自己发 HTTP 请求并解析 JSON。最轻量的做法是用 curl + jq:
curl -s "https://packagist.org/search.json?q=&tags=cache" | jq -r '.results[] | select(.downloads > 1000) | "\(.name)\t\(.description)"'
说明:
-
tags=cache是 URL 参数,必须小写、无空格、不加引号 -
jq用来提取字段;select(.downloads > 1000)是可选过滤,避免冷门包刷屏 - 注意
q=保持为空,否则会触发名称/描述的全文搜索,干扰 tag 精准性 - 返回结果不含版本信息,只反映最新稳定版的元数据
为什么不能用 composer show 或 composer depends 来反查?
composer show 只能查已安装包的详情,composer depends 查的是依赖关系,两者都接触不到 Packagist 的全局标签索引。哪怕你本地装了 monolog/monolog,运行 composer show monolog/monolog 能看到它的 keywords(即标签),但这是单个包的静态字段,没法帮你发现“所有带 logging 标签的新包”。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
常见误操作:
- 在项目根目录执行
composer search logging→ 实际搜的是包名或描述含 “logging”,不是标签 - 试图用
composer show --all列出全部包再 grep → 这命令不存在,--all不是show的合法选项 - 把
keywords当成 Composer 内置字段去配置composer.json→ 它只是 packagist.org 展示用,不影响安装逻辑
实际使用时容易忽略的兼容性细节
Packagist API 的 tags 参数只接受单个值,不支持逗号分隔或多值查询。想查同时带 cache 和 redis 的包,得先搜 cache,拿到结果后再用脚本二次过滤 description 或 keywords 是否含 redis —— 因为 Packagist 并未提供布尔组合标签搜索。
另外要注意:
- API 返回最多 20 个结果,不分页;想查看更多需调整
per_page参数(但官方文档未公开支持,实测无效) - 部分包提交时没填
keywords,即使功能高度相关也不会出现在 tag 搜索结果里 - 中文标签几乎不存在,所有 tag 都是英文小写,搜
缓存或Cache都不会命中
标签搜索本质是靠作者自觉填写,不是结构化分类系统,别指望它像数据库索引一样可靠。

















