composer怎么给项目加描述_修改composer.json描述信息【参考】

3次阅读

直接编辑项目根目录下的 composer.json 中小写 description 字段,值为 UTF-8 编码字符串,改完无需执行命令,但需手动触发 Packagist 同步或重装依赖才能生效。

composer怎么给项目加描述_修改composer.json描述信息【参考】

composer.json 里 description 字段怎么改

直接编辑项目根目录下的 composer.json,找到 description 字段,改掉就行。它只是纯文本字段,不参与安装、加载或版本解析,改完不用执行任何命令生效——但别人看 packagist.org 或运行 composer show 时才会反映出来。

常见错误现象:composer require xxx 后发现新包没显示描述;或者自己发包到 Packagist,页面上 description 是空的——大概率是本地 composer.json 根本没写这个字段,或拼错了(比如写成 descDESCRIPTION)。

  • 字段名必须是小写的 description,大小写敏感
  • 值必须是字符串,不能是 NULLfalse 或空数组
  • 如果用 composer init 初始化过,它会交互式问你描述,但默认可能留空,得手动补上
  • 中文描述完全没问题,但注意 JSON 文件编码要是 UTF-8,别用记事本另存为 ANSI 导致乱码

修改后怎么让 Packagist 页面更新

Packagist 不自动轮询你的仓库,它只在你触发同步时拉取最新 composer.json。改完本地 description,必须让 Packagist 重新抓取一次。

使用场景:你维护一个开源包,刚发了 v1.2.0,顺手更新了 description,但官网页面还是旧的。

  • 登录 packagist.org,进你的包页面,点右上角 Update 按钮(需有包维护权限)
  • 或者用 gitHub/gitlab 的 webhook 自动触发:确保仓库设置里已启用 Packagist webhook,且推送的是 default branch(通常是 mainmaster
  • 手动触发失败?检查 Git 提交是否真包含了修改后的 composer.json —— 有时候 git add -u 漏掉了它

description 写什么才算有用

它不是 slogan,也不是 README 替代品,而是让别人在搜索、列表浏览时 3 秒内判断“这东西是不是我要的”。太笼统(如“一个 PHP 工具库”)或太技术(如“基于 PSR-14 实现的事件分发器”)都降低识别效率。

性能 / 兼容性影响:无。这个字段不参与任何运行时逻辑,也不会被 Composer 加载或解析。

  • 优先说明解决什么问题:比如 "Adds laravel-style request validation to Slim 4"
  • 避免形容词砌:“高性能、轻量、优雅”之类毫无信息量
  • 如果包有明确目标框架/标准,可以提:比如 "PSR-18 http client wrapper with retry and circuit breaker"
  • 长度控制在 120 字符内,Packagist 列表页会截断显示

为什么 composer show 不显示新 description

composer show 默认查的是已安装包的元数据,而本地改的 composer.json 只影响当前项目定义,不影响已安装依赖的描述。如果你改的是自己项目的 description,那 composer show myvendor/myproject 才能看见;如果改的是某个依赖包的 composer.json,那根本不会生效——你改的不是它的源码仓库。

容易踩的坑:误以为改了 vendor 里某个包的 composer.json 就能影响 composer show 输出。其实 vendor 下的文件是只读快照,Composer 不会从那里读取描述,而是从其原始 source(Packagist 或 VCS)拉取。

  • 确认你在改哪个 composer.json:项目根目录下的是“你自己这个包”的描述;vendor/xxx/yyy/composer.json 是别人包的副本,改了白改
  • composer show 不加参数时列出所有已安装包,但描述来自 Packagist 缓存,不是本地 vendor 文件
  • 想立刻验证?删掉 vendorcomposer.lock,再 composer install —— 这样会重新从源拉取元数据

最常被忽略的一点:description 字段只对“作为 package 被发布”的项目有意义。如果你的项目 never 发布、never require 被他人引用,那它本质上就是个私有脚本,填不填 description 完全无所谓。

text=ZqhQzanResources