git composer 新創建包發佈到packagist上
開發一個 composer 通用文件上傳包,發佈到 Packagist,並在 Laravel 中測試
一、GitHub 創建一個名 uploadfile 新倉庫,並克隆至本地。
二、初始化項目,生成composer.json
文件
2.1 步驟解釋
$ composer init
Welcome to the Composer config generator
This command will guide you through creating your composer.json config.
// 1. 輸入項目命名空間
// 注意<vendor>/<name> 必須要符合 [a-z0-9_.-]+/[a-z0-9_.-]+
Package name (<vendor>/<name>) [dell/htdocs]: yourname/projectname
// 2. 項目描述
Description []: 這是一個測試
// 3. 輸入作者信息,可以直接回車
Author [feiker.hong <[email protected]>, n to skip]:
// 4. 輸入最低穩定版本,stable, RC, beta, alpha, dev
Minimum Stability []: dev
// 5. 輸入項目類型,
Package Type (e.g. library, project, metapackage, composer-plugin) []: library
// 6. 輸入授權類型
License []:
> Define your dependencies.
// 7. 輸入依賴信息
Would you like to define your dependencies (require) interactively [yes]?
// 如果需要依賴,則輸入要安裝的依賴
Search for a package: php
// 輸入版本號
Enter the version constraint to require (or leave blank to use the latest version): >=5.4.0
// 如需多個,則重複以上兩個步驟
// 8. 是否需要require-dev,
Would you like to define your dev dependencies (require-dev) interactively [yes]?
// 操作同上
{
"name": "guanguans/uploadfile",
"description": "一個通用文件上傳包",
"type": "library",
"require": {
"php": ">=7.0"
},
"require-dev": {
"php": ">=7.0"
},
"license": "MIT",
"authors": [
{
"name": "feiker.hong",
"email": "[email protected]"
}
],
"minimum-stability": "dev"
}
// 9. 是否生成composer.json
Do you confirm generation [yes]? yes
三、添加自動加載
在上一步生成的composer.json
中追加
"autoload": {
"psr-4": {
"Plugins\\": "src/"
}
}
四、構建項目
4.1 新建uploadfile/src/UploadFile.php
├─uploadfile
│ ├─src
│ │ ├─UploadFile.php
│ └─composer.json
4.2 測試
4.2.1 終端下執行 composer install
,這時會生成vendor
目錄,及其他文件
$ composer install
五、添加 README.md
、LICENSE
、.gitignore
等文件
├─uploadfile 擴展包根目錄
│ ├─src 擴展包代碼目錄
│ │ ├─UploadFile.php
│ ├─test 測試目錄
│ │ ├─uploadfile.html
│ │ ├─UpploadfileTest.php
│ ├─.gitignore
│ ├─composer.json
│ ├─LICENSE
│ └─README.md
六、推送到 GitHub
git add .
git commit -m 'init'
git tag v1.0.0 // 記住打一個版本號
git push origin master
git push v1.0.0
七、將 GitHub 上的包提交到 Packagist
- 首先要在 Packagist 上註冊賬號並登錄(可以用 GitHub 直接登錄)
- 點擊頂部導航條中的 Summit 按鈕
- 在輸入框中輸入 GitHub 上的剛纔包地址,如:
https://github.com/xxx/xxx
- 然後點擊 Check 按鈕 Packagist 會去檢測此倉庫地址的代碼是否符合 Composer 的 Package 包的要求
檢測正常的話,會出現 Submit 按鈕,再點擊一下 Submit 按鈕,我們的包就提交到 Packagist 上了
八、設置 composer 包自動更新
上面提交上的包提交的包,當我們更新 GitHub 倉庫時,Packagist 上面的的包並不會自動更新,現在我們來設置一下自動更新
8.1 複製 Profile API Token
8.2 打開 GitHub 項目 setting
,選擇 Integrations & services
,添加 packagist service
,點擊 Test service
8.3 驗證是否已經自動更新
移步 Packagist 包主頁,發現已經沒有了紅色的圈住的提示,說明設置自動更新成功。
九、項目中使用
我以 Laravel 中使用舉例
composer create-project laravel/laravel
cd laravel
composer require xxx/uploadfile