釋出自己的composer包

denfer發表於2022-03-21

在我們的開發過程中,你可能有一些非常好用的小工具或者一些非常有特色的功能點,我們可以把它做成composer包,供自己以後使用並分享給大家。

前期準備

打包

首先,在託管網站,建立一個倉庫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資料夾內寫我們自己的程式碼。

釋出自己的composer包

這個地方要注意名稱空間,否則安裝完成後會報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,開啟下面頁面。

釋出自己的composer包

貼上剛才複製的專案地址,點選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。

釋出自己的composer包

開啟Packagist API Token

釋出自己的composer包

複製token,現在我們就拿到了兩個payload url和token;開啟github進入我們的專案。點選setting->webhooks->add webhook->

釋出自己的composer包

自動同步就完成了,git提交push後會自動同步到packagist。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章