Composer 是 PHP 用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。

现在应该所有的框架都支持使用Composer进行包管理了。如何发布自己的包呢?

首先,去github创建一个自己的包,例如https://github.com/zhujp/wechat.git

克隆到本地

git clone  https://github.com/zhujp/wechat.git

进入目录,执行初始化

composer init

回提示你

  Welcome to the Composer config generator



This command will guide you through creating your composer.json config.

然后,输入包名

Package name (<vendor>/<name>) [vilay/www]:  zhujp/wechat

输入描述:

Description []:	A Simple WeChat develop package

输入作者

Author [zhujp <zhujp1211@163.com>]:zhujp <zhujp1211@163.com>

输入版本

Minimum Stability []:dev

输入开源协议

License []:MIT

定义依赖等

Define your dependencies.

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

{
		"name": "vilay/wechat",
		"description": "A Simple WeChat develop package",
		"license": "MIT",
		"authors": [
				{
						"name": "zhujp",
						"email": "zhujp1211@163.com"
				}
		],
		"minimum-stability": "dev",
		"require": {}
}

Do you confirm generation [yes]? yes

我的包目录结构如下

wechat
--src/  # 目录类库代码写在该目录下
--src/
--src/WeChat.php
--src/Helps.php
--composer.json
--README.md

修改composer.json自动加载设置,添加下面的配置

"require": {
    "php": ">=5.4.0"
},
"autoload": {
    "psr-4": {
        "WeChat\\": "src/"
    }
}

提交到github

进入packagist网站,提交包

Packagist

进入网站,注册帐号,在submit那边提交git地址就可以了。

因为上面提交的是开发版本的,所以在别人使用包的时候,例如composer require zhujp/wechat,会报错

[InvalidArgumentException]
Could not find package zhujp/wechat at any version for your minimum-stability (stable). Check the package spelling or your minimum-stability

Composer 包的版本来自于git 分支taggit分支代表开发(dev)版本,tag代表稳定(stable)版本。

本地要求的时候稳定版本的,所以可以在github上发布个版本,在github上可以直接操作,这边介绍下用命令行的方式处理

git tag 1.0

git push origin --tags

然后在packagist上更新看下有没有发布版本的包。

如果执行composer require zhujp/wechat还报错,等一天,有可能是服务器那边问题。