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 <feiker.hong@gmail.com>, 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": "feiker.hong@gmail.com"
}
],
"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