readme必须明确写出composer require vendor/package-name安装命令,标注版本与环境要求,autoload配置须与composer.json严格一致,示例代码应可直接运行且依赖清晰。

README 里必须写清楚 composer require 命令怎么用
用户装包的第一步不是看文档,是复制粘贴安装命令。如果 README 没写或者写错,别人根本不会继续往下读。
- 格式必须是
composer require vendor/package-name,不能省略vendor/—— Composer 不支持只输包名(比如composer require foo) - 如果包只支持特定 PHP 或 Composer 版本,得在命令后加注释,例如:
composer require myorg/mylib:^2.0(要求 PHP >=8.1) - 别写
git clone && composer install这类开发流程——这是给贡献者看的,不是给使用者的
autoload 配置必须和 composer.json 里的 autoload 字段完全一致
文档里写的命名空间、文件路径,一旦和 composer.json 对不上,用户 require 后 new MyClass() 就会报 Class not found。
- 常见错误:文档写
use MyLibUtilsHelper;,但composer.json里是"psr-4": { "MyLib\": "src/" },而实际类文件在src/Utils/Helper.php—— 这没问题;但如果写成"psr-4": { "MyLib\Utils\": "src/" },那就要改成use MyLibUtilsHelper;,且文件得在src/Helper.php - 别在 README 里教人手动改
vendor/autoload.php—— Composer 自动处理 autoload,手动干预等于绕过机制 - 如果用了
files类型 autoload(比如全局函数),得明确写出哪些函数可用,例如:mylib_str_slug()
示例代码要能直接跑,且基于最小依赖场景
用户复制过去就该能 php example.php,而不是先查半天缺哪个扩展、哪个环境变量没设。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 避免用
$_ENV['API_KEY']这种需要外部配置的写法;真要用,就写成$key = $_ENV['API_KEY'] ?? 'test-key'; - 别出现
new GuzzleHttpClient()却不说明要composer require guzzlehttp/guzzle—— 如果只是示例,要么用内置函数(如file_get_contents),要么注明“仅作示意” - 类名、方法名、参数顺序必须和实际发布的版本严格一致;发了 v1.2 后改了
Processor::run()签名,README 还写->run($data, $options)就会误导
别把 composer.json 当配置文件来文档化
README 不是 composer.json 的翻译器。用户不关心你用了什么 scripts,除非那个 script 是公开 API(比如 composer test 是包提供的标准测试入口)。
- 不用列
require里的所有依赖项——那是composer show干的事;只提关键硬依赖,比如“需 PHP >=8.0,不兼容 Laravel 9 以下” -
conflict、provide、replaces这些字段几乎不用写进 README,除非你在做插件生态兼容(比如适配 Symfony Contracts v3) - 如果包有可选功能(如支持 Redis 缓存),要写清楚启用条件:“启用需安装
ext-redis并配置cache.driver=redis”,而不是只丢一句“支持多种缓存驱动”
最常被忽略的一点:README 里的路径、命名空间、命令,全都得和 packagist.org 上实际发布的版本对齐。发包前不 composer install && php -r "new VendorPackageClass();" 过一遍,文档再漂亮也没用。










