如何创建自己的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 

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

在这里插入图片描述

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