如何发布composer包

在 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 来下载和使用你的包了。