在 PHP 开发中,一个好的代码包可以省去很多的重复开发,提高了工作效率。Composer 是一个 PHP 依赖管理工具,能够简化自己和团队的依赖管理,帮助你更好地维护你的项目。本篇文章将详细介绍如何将自己的代码包发布到 Composer 中心库。
1. 创建一个 Composer 包
如何创建一个代码包以及如何使用 Composer 创建一个代码包没有篇幅来限制。这里我们已经创建了一个名为 `doracms/package-demo` 的示例包。在本地我们可以使用:
composer require doracms/package-demo
来安装这个包。
2. 按规范组织代码
Composer 期望你按照一定的规范来提供你的代码,你只需要按照它的要求来组织你的目录结构就可以。
2.1 Code
你的代码约定放在 `src/` 目录下。如果你有多个命名空间,需要将类放在对应的目录下,例如 `src/Doracms/PackageDemo/Example.php`。
2.2 Autoloading
你需要通过 composer.json 文件显式的定义命名空间的 autoloading 规则。
{
"autoload": {
"psr-4": {
"Doracms\\PackageDemo\\": "src/"
}
}
}
2.3 Testing
你的测试代码应该在与 `src/` 同级的 `tests/` 目录下。以下是示例目录结构:
```
├── src/
│ └── Doracms/
│ └── PackageDemo/
│ └── Example.php
└── tests/
└── Doracms/
└── PackageDemo/
└── ExampleTest.php
```
3. 完善 composer.json 文件
现在你已经有了组织好的代码包,现在是时候给你的代码包加上一些元数据了。需要完善的内容包括:
- name: 包名,格式为 `vendor/package`。
- description: 简述你的包的用途。
- type: 包的类型,例如 library、project 等。在发布后还会有 platform 包类型。你可以在 https://getcomposer.org/doc/04-schema.md#type 查看更多包类型的详情。
- keywords: 关键字,用于帮助其他人更好地搜索到你的包。
- homepage: 你的包的官方网站。
- readme: 你的 README.md 文件位置,如果你的 README 文件是在根目录,可以省略。
- license: 你的包的许可证类型,可以是一个字符串或一个数组。
- authors: 你和你团队的作者信息列表。
- require: 你的包需要的其他依赖,这里是必选项。
- minimum-stability: 你的包的稳定性,可以是 dev、alpha、beta、RC、stable 中的一个,也可以是大写字符“@dev”、“@stable” 的一种形式。
- autoload: 自动加载配置项,与上文提到的相同。
- autoload-dev: 自动加载配置项,用于加载测试代码。
- scripts: 发布过程中需要执行的可运行脚本。
{
"name": "doracms/package-demo",
"description": "An example package",
"type": "library",
"keywords": ["package", "example", "library"],
"homepage": "https://github.com/doramcs/package-demo",
"license": "MIT",
"authors": [
{
"name": "Dora Zhang",
"email": "dora@example.com"
}
],
"require": {
"php": "^7.4"
},
"minimum-stability": "dev",
"autoload": {
"psr-4": {
"Doracms\\PackageDemo\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"Doracms\\PackageDemo\\Tests\\": "tests/"
}
}
}
4. 提交包到 Packagist
Oh yeah!你已经准备好将你的包提交到 Packagist 了。在提交包之前要确认你拥有一个 Packagist 帐号。如果还没有,请访问 https://packagist.org/register/ 注册一个。
4.1 登录到 Packagist
进入 https://packagist.org/,点击右上角的“Submit”,使用给出的登录方式登录到你的账户。
4.2 提交你的包
接着,你需要在提交页面上输入需要提交的包的名称。Packagist 在包名称中使用了一种类似 Github 的 `vendor/package` 的方式。你的包名称需要和你 `composer.json` 中的 `name` 字段一致。
提交成功后,你会看到下图所示的提示信息:
5. 发布版本
要想引用你的包,必须发布一个初始版本。你需要在本地项目目录下运行:
$ git tag v1.0.0
$ git push --tags
此时,你可以在你 Packagist 仓库的版本列表中看到你刚刚打的标签。
祝贺你,已经成功完成了包的提交和发布!现在你可以使用 Composer 来下载和使用你的包了。