直接修改 composer.json 中顶层的 "description": "..." 字段即可,无需命令;改后需保存文件、确保 JSON 合法,并提交 Git 或同步 Packagist 才生效。

怎么直接改 composer.json 里的项目描述
项目描述存在 composer.json 的 description 字段里,改它就行,不需要任何命令。很多人以为得用 composer config 或其他命令生成,其实不是——这个字段纯手工维护。
常见错误现象:composer show 输出的描述没变,或者 Packagist 页面还是旧文案,大概率是改了但没保存文件,或改错了位置(比如写到 require 里去了)。
- 打开项目根目录下的
composer.json - 找到顶层的
"description": "..."字段,修改引号内的内容 - 确保 JSON 格式合法(末尾不能多逗号,引号必须是英文双引号)
- 保存后运行
composer show your-vendor/your-package验证(本地包需先composer install或composer dump-autoload)
composer config 能不能设 description
不能。composer config 只能操作配置类字段(如 github-protocols、bin-dir),不支持写入 description 这类元数据字段。强行执行 composer config description "xxx" 会报错:[InvalidArgumentException] Setting description does not exist。
使用场景:只有当你在写 CI 脚本、需要自动化更新某些配置项时,才用 composer config;改描述不属于这个范畴。
-
composer config管的是composer.json里的config对象,不是整个文件 - 想脚本化更新
description,得用jq或 PHP 自己读写 JSON(例如:jq '.description = "new desc"' composer.json > tmp.json && mv tmp.json composer.json) - 别依赖
composer update或install来“触发” description 更新——它们完全不读这个字段
description 写不好会影响什么
它不参与依赖解析、不改变安装行为,但会影响人——尤其是你在 Packagist 或私有仓库发布包时。别人搜包、看列表、决定是否引入,第一眼就是 description。
容易踩的坑:写成空字符串、只写“项目描述”、堆砌关键词、含不可见 Unicode 字符(导致 Packagist 解析失败)。
- Packagist 会截断过长的 description(约 120 字符),建议控制在一行内说清用途
- 不要包含版本号或时间(如 “v2.1 版本工具”),因为这个字段不会随版本自动更新
- 如果项目是私有库且不发布,description 没实际作用,但团队协作时仍建议写清楚,方便
composer show快速识别
改完 description 后要不要提交或重发包
要,但取决于你用在哪。
使用场景:如果你只是本地开发调试,改了就生效;但只要涉及共享(Git 提交、Packagist 同步、私有仓库推送),就必须把新 composer.json 提交上去。
- Git 仓库:改完
composer.json后记得git add composer.json && git commit - Packagist:它只在你 push tag 或设置 webhook 后拉取最新
composer.json,改完文件不 push 就不会更新 - 私有 Satis/SatisPress:需重新运行
php bin/satis build ...才能刷新元数据
最常被忽略的一点:很多人改完 description 就以为完事了,结果同事 composer require 装的还是旧包——因为 Packagist 没刷新,或者本地 composer.lock 锁着旧版本信息。










