初始化扩展包
在项目目录下执行命令:
composer init#跟随提示依次输入以下内容后回车:#包的名称,不输入任何内容直接回车,则直接使用 "[]" 内的内容,下同Package name (<vendor>/<name>) [administrator/test]:#包的描述Description []:#作者信息Author [administrator <administrator@example.com>, n to skip]:#Minimum Stability []:#Package Type (e.g. library, project, metapackage, composer-plugin) []:#License []:#定义依赖项,如果不需要依赖其他扩展则直接输入 n 回车Define your dependencies.Would you like to define your dependencies (require) interactively [yes]? nWould you like to define your dev dependencies (require-dev) interactively [yes]? n#生成之前的最后确认,直接回车即可{"name": "administrator/test","authors": [{"name": "fudonghui","email": "fdhjyx@gmail.com"}],"require": {}}Do you confirm generation [yes]?
经过以上步骤,在当前项目目录就生成了 composer.json 文件
设置环境要求
修改 composer.json 文件
{"name": "administrator/test","authors": [{"name": "administrator","email": "administrator@example.com"}],"require": {"php": ">=7.0"},}
设置自动加载
修改 composer.json 文件
{"name": "administrator/test","authors": [{"name": "administrator","email": "administrator@example.com"}],"require": {"php": ">=7.0"},"autoload": {"psr-4": {"Test\\": "src/"}}}
测试安装
执行安装命令 composer install 会在 vendor/composer/autoload_psr4.php 中生成命名空间和目录的映射关系
提交代码到 github
增加 .gitignore 为 git 忽略一些文件,增加 readme.md 为项目增加描述,然后提交代码到 github
.ideavendor/composer.lock
安装自己的扩展
没有提交到 packagist 上之前,需要在 composer.json 中指定 repositories 申明来源:
{"repositories": [{"type": "git","url": "https://github.com/username/hello-world.git"}],"require": {"administrator/test": "dev-master"}}
dev-master 表示安装的是 master 分支
github 创建标签后可以通过版本号安装,例如创建标签 v1.0.0 后通过 "administrator/test": "1.0.0" 安装
TortoiseGit 创建标签后,需要推送到服务器(推送时勾选 “包括标签”)
此种方式可以安装任何常见的版本库,而不仅仅是 github,并且可以安装 private 库,在安装时需要输入对应的账号和密码
提交项目到 packagist.org
访问 https://packagist.org/packages/submit (需要注册后登陆),将自己的项目地址粘贴,点击check,然后点击submit,至此,自己的composer包就提交成功了
设置自动更新扩展包(即当我们更新扩展包提交到GitHub时,Packagist自动更新)简化步骤如下:
- 去个人中心页面拿到自己的api令牌
- 去当前包在GitHub的地址,点击设置,点击集成和服务,点击添加Packagist服务并配置你的API令牌,以及你的Packagist用户名和账号对应域名
- 选择active,点击add service
- 设置自动更新结束,之后你更改了自己包扩展的代码提交到GitHub后,很短的时间差就会同步到Packagist
使用 github 账号关联注册的 packagist 账号无需只需要提交,不需要额外设置即可自动更新
此种方式必须是 public 库