## 示例:手把手教你發布自己的 Composer 包
## 一、前言
Composer 是 PHP 用來管理依賴(dependency)關系的工具。我們不僅要學會使用別人提供的包,更要學會制作和分享自己的軟件包,下面演示如何創建一個自己的 Composer 包。
#### 準備工作:
1. 注冊 [Github](https://link.jianshu.com?t=https%3A%2F%2Fgithub.com%2F) 賬號
2. 注冊 [Packagist](https://link.jianshu.com?t=https%3A%2F%2Fpackagist.org%2F) 賬號
## 二、實踐
本案例演示如何創建一個第三方消息推送(極光推送)的包。
#### 1\. 創建 Github 倉庫
登錄 Github,創建倉庫 `yanlongma/push`,并將代碼克隆到本地:
~~~php
$ git clone https://github.com/yanlongma/push.git
~~~
#### 2\. 創建 Composer 配置文件
進入項目根目錄,創建 Composer 配置文件 composer.json,可以使用命令 `compser init` 創建也可以手動創建,最終文件內容大體如下:
~~~json
{
"name": "yanlongma/push",
"description": "Third party message push",
"authors": [
{
"name": "Yanlong Ma"
}
],
"license": "MIT",
"require": {
"php": ">=5.4"
},
"autoload": {
"psr-4": {
"YanlongMa\\Push\\": "src/"
}
}
}
~~~
#### 3\. 提交代碼到 Github
根據自己需要實現的功能編寫代碼,本項目最終項目結構如下:
~~~undefined
.git/
.gitignore
composer.json
README.md
src/
Client.php
JPush.php
~~~
代碼編寫完成且測試沒問題后提交代碼到 Github。
#### 4\. 發布包到 Packagist
登錄 Packagist,檢出 `https://github.com/YanlongMa/push.git` 倉庫的代碼,系統會根據倉庫中 composer.json 文件自動設置包的相關信息。
#### 5\. 設置 Packagist 中的包自動更新
如果不設置自動同步,每次 Github 中的代碼更新,需要在對應包中手動更新,所以建議設置自動更新。步驟如下:
1. 進入 yanlongma/push 倉庫,選擇 "Settings -> Integrations & services";
2. 點擊 "Add service",選擇 “Packagist”;
3. 填寫你的 Packagist 賬號對應的信息(登錄后點擊查看[https://packagist.org/profile/](https://link.jianshu.com?t=https%3A%2F%2Fpackagist.org%2Fprofile%2F) )
4. 配置完成后,點擊右上角的“Test service”,如果出現 “Okay, the test payload is on its way.”,則說明配置成功。
#### 6\. 使用共享包
發布包到 Packagist 后,根據包名就可以搜索和使用該包了,在自己的項目中申明該包依賴:
~~~ruby
$ composer require yanlongma/push
~~~
該包的具體使用可以查看 [https://github.com/yanlongma/push](https://link.jianshu.com?t=https%3A%2F%2Fgithub.com%2Fyanlongma%2Fpush)。
***注***:
* 發布包到 Packagist 后,可能過幾分鐘才能在客戶端 search 到;
* 沒有打 tag 的要指定 dev,完整命令`composer require "yanlongma/push @dev"`
- composer教程文檔
- Composer 的常用命令
- 鏡像操作
- 教程收集
- composer命令
- 全局選項
- init命令
- 安裝命令
- update命令
- require命令
- remove命令
- check-platform-reqs
- globa命令
- search命令
- show命令
- outdated命令
- Options命令
- browse / home命令
- suggests命令
- depends (why)命令
- prohibits (why-not)命令
- validate驗證命令
- status狀態命令
- self-update (selfupdate)
- config命令
- create-project命令
- dump-autoload (dumpautoload)
- clear-cache (clearcache)
- licenses命令
- run-script命令
- exec命令
- diagnose命令
- archive命令
- help命令
- 環境變量
- composer.json說明
- composer.json示例1
- 自制composer包
- 制作步驟1、生成composer包
- 制作步驟2:生成目錄結構
- 制作步驟3:完善程序
- 制作步驟4:上傳程序包
- 示例:手把手教你發布自己的 Composer 包
- 示例:一步一步創建自己的composer包
- 實例2
- 鏡像與常用包
- 中國鏡像
- 常用包收集
- composer包的使用
- 包的使用
- 本地自定義文件的使用