keywords字段须置于composer.json顶层,与name、description并列;仅用于packagist搜索,不参与依赖解析;应填3–5个小写英文词,用连字符连接,避免泛化堆砌。

keywords 字段写在哪儿
它必须放在项目根目录的 composer.json 文件顶层,和其他字段如 name、description 并列,不能嵌套在 require 或 autoload 里。
常见错误是把它塞进 extra 或当成注释写在文件末尾——那完全不会被 Packagist 识别。
正确写法示例:
{
"name": "vendor/package",
"description": "A useful utility",
"keywords": ["utility", "string", "validation"]
}
关键词怎么选才有效
Packagist 搜索不支持模糊匹配或语义理解,只做精确词干比对。填 “laravel-helper” 不等于能搜到 “laravel helper”,空格和连字符会被视为分隔符,实际拆成三个独立词:laravel、helper、laravel-helper。
建议按以下方式处理:
- 用小写英文单词,避免缩写(比如用
database而非db) - 覆盖常见拼写变体(
color和colour都写) - 包含领域+功能组合(
api,client,http同时存在比单写一个更易被发现) - 别堆砌无关词(比如写
php、open-source——几乎所有包都符合,反而稀释真实特征)
提交后关键词多久生效
修改 composer.json 并 push 到 GitHub/GitLab 后,Packagist 默认通过 webhook 自动更新元数据,通常 1–2 分钟内可见。
但如果没配 webhook 或手动触发同步失败,关键词就不会刷新。此时要登录 Packagist 页面,找到对应包,点 “Update” 按钮强制拉取最新 composer.json。
注意:Packagist 不会重新索引历史版本,只更新当前 default branch(通常是 main 或 master)的 composer.json 内容。
关键词对安装和依赖解析没影响
keywords 是纯元数据字段,Composer 安装时完全不读取它,也不会用于版本约束、自动加载或冲突检测。
它唯一作用就是提升 Packagist 网站搜索结果的相关性。有人误以为加了 "keywords": ["psr-4"] 就能让 autoload 生效——不会。autoload 行为只由 autoload 字段决定。
真正容易被忽略的是:如果你改了 keywords 却没更新 Packagist 元数据,或者用了非常冷门/自造的词(比如 mycoolthing),那基本等于没写。











