1.一個github帳號
2.一個packagist帳號
3.一臺安裝composer的開發機php
爲了組(tao)件(bi)化(xue)開(xi)發,在最近作項目的時候,把一部分做爲單獨的組件來開發。組件化離不開跟包打交道,通過最近的折騰,記錄一下本身開發包的過程。laravel
首先,新建一個 Laravel 項目,並在項目根目錄下新建 packages
文件夾。
在 packages
文件夾中,新建以你名字爲命名的文件夾,並在此文件夾內創建以項目名命名的文件夾。git
├── app
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── package.json
├── packages
└── packagedemo複製代碼
如上例,進入 packages\sliverwing\packagedemo
運行 composer init
命令,進入 Composer config generator
分別鍵入 Package name
Description
Author
Minimum Stability
Package Type
License
和交互方式定義所依賴的庫 require
require-dev
後即可生成該包的 composer.json
接下來,編輯 composer.json
增長如下內容:github
"autoload": {
"psr-4": {
"Sliverwing\\PackageDemo\\": "src/"
}
},複製代碼
這裏定義了,該包發佈後 composer
如何對項目進行自動加載。
在 Laravel 項目下的 composer.json
中,修改 autoload
配置,使得在編寫包的過程當中 Laravel 項目能自動加載包。web
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/",
"Sliverwing\\PackageDemo\\": "packages/sliverwing/packagedemo/src/"
}
},複製代碼
接下來,在 packagedemo
中新建 src
config
migrations
文件夾。json
└── packagedemo
├── composer.json
├── config
├── migrations
└── src複製代碼
src
這裏是主要存放代碼的地方。能夠參考 Laravel 中 app
的目錄來組織 src
文件夾中的目錄。config
和 migrations
比較容易理解,存放包的配置文件和擴展,固然能夠根據包內業務的須要加入 views
或者其餘須要 pulish
的文件目錄。bootstrap
咱們在 config
文件夾下新建 packagedemo.php
,用來保存包的配置信息。api
回到 laravel
項目的根目錄,使用 php artisan make:provider PackageDemoServiceProvider
建立包的 ServiceProvider
。
把 app\Providers\PackageDemoServiceProvider.php
移動到 packages\sliverwing\packagedemo\src
下,並修改 namespace
。bash
參考 laravel.com/docs/5.3/pa…app
繼續修改,使得在運行 php artisan vendor:publish
時,咱們的配置文件能夠複製到 Laravel 工程的 config
文件下。
在 boot
方法裏,新增代碼以下:
$this->publishes([
__DIR__.'/../config/packagedemo.php' => config_path('packagedemo.php'),
]);複製代碼
接下來,把 PackageDemoServiceProvider
加入到 config\app.php
中。
Sliverwing\PackageDemo\PackageDemoServiceProvider::class,複製代碼
在 Laravel 項目目錄下,運行 composer dump-autoload
,而後運行 php artisan vendor:publish
能夠發現,包下面的配置文件複製到 Laravel 項目中 config
文件夾下了。
接下來,能夠在 src
文件夾下建立 Http\Controllers
文件夾,並根據業務須要,新增包內的 Controller ,也能夠對現有的組件進行擴展。
也能夠參考其餘包項目來進一步完善本身的項目組建。將寫好的 包 發送到 GitHab 上
git add .
git commit -m 'commit'
git push
// 最好打上 tag 也推送過去
git tag 1.0.1 -a -m 'v1.0.1 release'
git push --tags複製代碼
1.首先要在Packagist上登陸
2.點擊頂部導航條中的Summit按鈕
3.在輸入框中輸入github上的倉庫地址,如:https://github.com/WXiangQian
4.而後點擊Check按鈕
5.Packagist會去檢測此倉庫地址的代碼是否符合Composer的Package包的要求
6.檢測正常的話,會出現Submit按鈕,再點擊一下Submit按鈕,咱們的包就提交到Packagist上了
複製代碼
1.從Packagist點擊我的中心點擊profile獲取token而後複製
2.到github項目首頁上點擊settings、點擊webhooks、點擊addwebhook
3.把https://packagist.org/api/bitbucket?username=USERNAME&apiToken=TOKEN 複製到Payload URL,在下方輸入密碼後保存複製代碼