description 字段必须填写非空字符串,否则 Packagist 显示“No description”且无法被搜索;同时需补全 name、type、license、autoload 四个关键字段以确保项目可发现与正确加载。

composer.json 中的 "description" 字段不是可选装饰项——它直接影响 Packagist 页面展示、IDE 提示、依赖分析工具识别,甚至某些 CI/CD 流程校验。没填或填空字符串,会导致包在 Packagist 上显示 “No description” 且无法被按关键词搜索到。
description 字段必须是字符串,不能为空或 null
Composer 不会报错,但 Packagist 会忽略该包的描述信息,且 composer show vendor/package 输出中 description 为空行。
- ✅ 正确写法:
"description": "A lightweight HTTP client for PHP" - ❌ 错误写法:
"description": ""或"description": null(JSON 语法不合法)或省略该字段 - ⚠️ 注意:描述应简洁(建议 ≤ 120 字符),避免营销话术,聚焦功能本质,比如 “Implements PSR-18 async HTTP client” 比 “The best, fastest, most awesome HTTP lib ever!” 更有效
除了 description,这 4 个字段也建议一并补全
仅填 description 不足以让项目被良好识别;Packagist 和静态分析工具(如 PHPStan 扩展扫描)依赖完整元数据。
-
"name":必须符合vendor/package格式,且全小写、无空格、仅含字母数字和短横线(myorg/http-client✅,MyOrg/HttpClient❌) -
"type":明确类型便于自动处理,如"library"、"wordpress-plugin"、"metapackage";默认是"library",但显式声明更稳妥 -
"license":必须是 SPDX 标识符(如"MIT"、"GPL-2.0-or-later"),填"proprietary"或"unlicensed"也可,但后者会让 Packagist 标红警告 -
"autoload":哪怕只是 PSR-4 基础配置,也应存在,否则 Composer 不加载你的类 —— 常见错误是路径末尾多加了/src但命名空间没对齐
用 composer init 生成基础结构时,description 容易被跳过
composer init 交互流程中,description 是可选步骤,默认回车即留空。一旦跳过,后续不会自动提醒补全。
- 运行时主动输入描述:在提示
Package Description [时别直接回车,敲一句实质内容]: - 已有
composer.json补填:手动编辑,确保字段在顶层 JSON 对象中,与其他字段同级(不在require或autoload内部) - 验证是否生效:执行
composer validate只检查 JSON 合法性,不校验 description 是否为空;真正验证得看composer show --all | grep description或提交后观察 Packagist 页面
description 看似微小,但它是一切外部发现流程的起点。漏掉它,等于把项目藏在没标签的抽屉里——你自己知道在哪,别人搜不到,工具也认不出。










