在我們的開發過程中,你可能有一些非常好用的小工具或者一些非常有特色的功能點,我們可以把它做成composer包,供自己以後使用並分享給大家。
前期準備
- 程式碼託管網站,例如github、gitee。
- 註冊packagist網站:https://packagist.org/。
打包
首先,在託管網站,建立一個倉庫git clone到本地。
然後進入目錄後執行初始化:
PS E:\project\sheng> composer init
Welcome to the Composer config generator
This command will guide you through creating your composer.json config.
Package name (<vendor>/<name>) [86182/sheng]: sophie/sheng #輸入包名稱: sophie/sheng。這裡面sophie一般是指組織機構名稱。sheng是包名稱。
Description []: 描述資訊
Author [zhangsan <xxxxx@126.com>, n to skip]: #作者資訊。直接回車或者自己指定
Minimum Stability []:
Package Type (e.g. library, project, metapackage, composer-plugin) []: library #包型別
License []: #資質許可
Define your dependencies.
Would you like to define your dependencies (require) interactively [yes]? #需要依賴的包,沒有就直接回車
Search for a package: #輸入你需要的依賴包名
Would you like to define your dev dependencies (require-dev) interactively [yes]? #指定本地開發時需要引入的依賴包名
Search for a package: #指定本地開發時需要引入的依賴包名
# 新增PSR-4自動載入對映?將名稱空間“Jackychen\Blog”對映到輸入的相對路徑,檢查沒問題直接回車。
Add PSR-4 autoload mapping? Maps namespace "Sophie\Sheng" to the entered relative path. [src/, n to skip]:
{
"name": "sophie/sheng",
"type": "library",
"autoload": {
"psr-4": {
"Sophie\\Sheng\\": "src/"
}
},
"authors": [
{
"name": "zhangsan",
"email": "xxxx@126.com"
}
],
"require": {}
}
Do you confirm generation [yes]? #直接回車生成composer.json
Generating autoload files
Generated autoload files
PSR-4 autoloading configured. Use "namespace Sophie\Sheng;" in src/
Include the Composer autoloader with: require 'vendor/autoload.php';
PS E:\project\sheng>
生成後的composer.json內容和檔案目錄結構。
我們可以在src資料夾內寫我們自己的程式碼。
這個地方要注意名稱空間,否則安裝完成後會報class not found。
然後開始提交到遠端倉庫。
可以忽略這兩個資料夾 在.gitignore檔案內新增 /vendor/ .idea
git add .
git commit -m 'no message'
git push
git tag 1.1.1 #加上標籤,以後每次釋出大版本可以打上標籤作為版本號
git push --tag
現在我們登入遠端託管平臺,我使用的是github。
開啟packagist,點選右上角submit,開啟下面頁面。
貼上剛才複製的專案地址,點選check,檢測成功後,點選submit,注意是點了兩次。下面介面是提交成功了。
這樣每次提交在這個頁面點選update就會同步過來了,我們也就可以設定自動同步,放在最後說吧。
現在我們就可以在專案裡是用composer來引用了
composer require sophie/sheng
現在可以找一個控制器
<?php
namespace App\Http\Controllers;
use Sophie\Sheng\Index;
class ProductController extends Controller
{
public function index()
{
Index::test();
}
}
這樣就完成了我們們得包釋出功能,以後如果有更新,我們們可以繼續迭代版本,打上標籤就可以用composer update來更新了。
自動同步
開啟地址:packagist.org/about 拉到下面,複製payload url。
複製token,現在我們就拿到了兩個payload url和token;開啟github進入我們的專案。點選setting->webhooks->add webhook->
自動同步就完成了,git提交push後會自動同步到packagist。
本作品採用《CC 協議》,轉載必須註明作者和本文連結