如何建立本身的 Laravel Composer包

How to create your own package for laravel

準備工做

1.一個github帳號
2.一個packagist帳號
3.一臺安裝composer的開發機php

如何建立本身的 Laravel Composer包

爲了組(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 文件夾中的目錄。
configmigrations 比較容易理解,存放包的配置文件和擴展,固然能夠根據包內業務的須要加入 views 或者其餘須要 pulish 的文件目錄。bootstrap

咱們在 config 文件夾下新建 packagedemo.php,用來保存包的配置信息。api

回到 laravel 項目的根目錄,使用 php artisan make:provider PackageDemoServiceProvider 建立包的 ServiceProvider
app\Providers\PackageDemoServiceProvider.php 移動到 packages\sliverwing\packagedemo\src 下,並修改 namespacebash

參考 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複製代碼

Packagist配置

github關聯到Packagist

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,在下方輸入密碼後保存複製代碼

若是想在github上發佈穩定版本包:juejin.im/post/5d0c80…

相關文章
相關標籤/搜索