如何創建自己的composer包

前提條件:環境已安裝了composer

一、創建一個空的目錄。

二、創建composer包

進入命令窗口,切換到剛新創建的目錄位置,運行以下命令,初始化composer包

composer init

命令窗口返回提示;

This command will guide you through creating your composer.json config.`
Package name (<vendor>/<name>) :

這裏寫包的名稱,我寫的是cjc/test,回車

輸入描述

Description []:

隨便填,“This is my first composer package”

輸入作者

Author [tomorrow <[email protected]>, n to skip]:

如果有默認值,直接回車

輸入最低穩定版本

Minimum Stability []:

該選項有可選值:stable, RC, beta, alpha, dev 一般填dev

輸入包類型

Package Type (e.g. library, project, metapackage, composer-plugin) []: 1

可選項在提示中已經有了,我們一般選library,填 l 即可

輸入開源協議

License []:

這裏我填 Apache-2.0 , 記得帶上版本號,只填Apache後續會有問題,其它開源協議 點擊參考

設置包需要依賴的其他環境或者包

Define your dependencies.
Would you like to define your dependencies (require) interactively [yes]?

如過需要,則yes 回車。例設置php版本

Search for a package:

填寫 php

Enter the version constraint to require (or leave blank to use the latest version):

填寫 >=5.6.0

設置完成後,會繼續返回搜索包

Search for a package:

不需要再設置其它依賴或包,則直接回車

Would you like to define your dev dependencies (require-dev) interactively [yes]?

直接回車

{
    "name": "cjc/test",
    "description": "This is my first composer package",
    "type": "l",
    "require": {
        "php": ">=5.6.0"
    },
    "license": "Apache-2.0",
    "authors": [
        {
            "name": "tomorrow",
            "email": "[email protected]"
        }
    ],
    "minimum-stability": "dev"
}
Do you confirm generation [yes]?

確認信息,直接yes 回車

Would you like to install dependencies now [yes]? yes

安裝完成,可以看到我們的目錄生成了如下結構。
composer package

vendor是composer存放包的地址,所有的包都存放在該路徑中統一管理。
並且composer提供了命名空間自動加載的功能,我們在使用過程中只需要引入composer的統一入口文件即可

編輯composer.json文件

{
    "name": "tomorrow-sky/test",
    "description": "This is cjc's first composer package.",
    "type": "1",
    "require": {
        "php": ">=5.6.0"
    },
    "license": "Apache-2.0",
    "authors": [
        {
            "name": "tomorrow-sky",
            "email": "[email protected]"
        }
    ],
    "minimum-stability": "dev",
	"autoload": {
		"psr-4": {
			"Cjc\\": "src/cjc"  
		}
	}
}

記得 psr-r 裏面, “Cjc\” 有兩個斜槓,不要去掉

【 這一步不要漏了哦 】

這裏的路徑需要根據你自己的來定,也可以參考以上寫法即可。
寫完之後需要運行一下命令行composer dump-autoload更新composer的命名空間與文件夾映射關係。

創建文件夾及功能

在根目錄(與composer.json 文件同級).
創建src目錄,再 src 裏面 創建cjc目錄,再 cjc 裏面創建Test.php文件。
命名空間,既是composer.json裏面寫的
<?php
//Test.php文件
namespace Cjc;
class Test
{
    function test()
    {
        echo "This is my first composer package";
    }
}

創建demo調用

在根目錄,創建demo文件夾,並在裏面創建index.php文件,編輯文件
<?php
require "../vendor/autoload.php";
$Test = new Cjc\Test();
$Test->test(); // echo "This is my first composer package"
可以根據你自己的想法來寫類,只需要注意命名空間的層級與文件夾層級相同,類名與文件名相同即可自動加載。

三、上傳composer包

1、首先在github上創建倉庫

在這裏插入圖片描述
在這裏插入圖片描述
2、將本地的composer包,發送到新創建的github倉庫上面

在本地 Git Bash 命令窗口輸入以下命令:

echo "# cjc_first_conposer" >> REMADE.md
git add .
git commit -m "first commit"
git remote add origin https://github.com/tomorrow-sky/cjc_composer_package1.git
git push -u origin master

四、關聯composer倉庫

composer的官方倉庫是 https://packagist.org/

我們打開,並且註冊一個賬號。然後點擊右上角的submit。把地址填寫進去,點擊Check按鈕
如果成功,則會變成Submit按鈕,點擊後即可關聯。

在這裏插入圖片描述

五、發佈新版本(打標籤)

到這裏,我們的github倉庫與packagist已經建立了關聯,但是這個使用還是用不了的,因爲我們還沒有發佈正式版本!

需要在git上打標籤,才認爲我們發佈了一個新的版本,packagist纔會去拉取並且提供給別人安裝。

git打標籤需要運行以下命令

git tag -a v1.0.1 -m "first version"
git push origin v1.0.1

然後更新以下composer官方倉庫包
在這裏插入圖片描述

六、完成、在項目中引入

到此,我們的composer包,已經創建完成。

在項目中,使用 
composer require xxx/xxx 

即可引入我們自己的包了。

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章