composer创建library包

Posted by epimetheusQ on 2021-08-13

注意事项

  1. 参考demo的例子:https://github.com/epimetheusQ/omnimate.git
  2. git 强制推送 git push -u origin master -f (强制推送,慎用)
  3. 在composer init时,如果创建一个项目,写project,如果想写一个类似于hyperf/validation的话,就需要选择library,其余暂未研究过。
  4. 即使你开了翻墙,正常推送代码,有时候也会推送代码/分支失败。
  5. 在composer init时,起composer包名,不能使用驼峰的形式,会报错,只能全部小写。如:epimetheus/omnimate
  6. 报错:Could not find a version of package epimetheus/omnimate matching your minimum-stability (dev). Require it with an e
    xplicit version constraint allowing its desired stability.

    原因: 新包是需要composer 升级2.0+ 才能安装,package.org会提示:
    This package is not installable via Composer 1.x, please make sure you upgrade to Composer 2+. Read more about our Composer 1.x deprecation policy.

目录

  1. github 创建仓库
  2. 本地git初始化
  3. 初始化composer至项目
  4. 将github的包注册至Package.org
  5. git 更新包

步骤实现

github 创建仓库

进入:https://github.com
登录或者注册账号,创建一个仓库,如:https://github.com/epimetheusQ/omnimate

本地git初始化

  1. 在命令行中,输入“git init”,使omnimate文件夹加入git管理;

  2. 输入“git add .”,将omnimate文件夹全部内容添加到git。

  3. 输入“git commit -m “first commit””(git commit -m “提交信息”)

  4. 从github将仓库内的文件pull下来 (以免push的时候出现冲突报错)
    git pull https://github.com/epimetheusQ/omnimate.git master –allow-unrelated-histories

  5. 输入 git remote add origin https://github.com/epimetheusQ/omnimate.git(git remote add origin 你自己的https地址),连接你的guthub仓库。

  6. 输入“git push -u origin master”,上传项目到Github。这里会要求输入Github的账号密码,按要求输入自己的就可以。当你在github上创建包时,默认分支是”main”,有可能会导致异常。

初始化composer至项目

  1. git初始化后,进入项目目录 然后输入“composer init”命令开始为该项目初始化composer
  2. 填一些生成composer.json的配置信息

    Package name 包的名称 (前面最好用自己的github账号名(保证唯一性),后面用仓库名) : epimetheus/omnimate

    description:包的描述。 : 随便填,此处填写的描述,会在git中出现。

    Author 包的作者 : 随便填,例如:enpmetheus

    Minimum Stability 输入最低版本类型 : dev (这里我们选择开发版),也可以选择 stable

    Package Type 项目类型 : 如果想写类库写library,否则project

    License [] 授权类型 随便填 : MIT

    Would you like to define your dependencies (require) interactively [yes]? 是否选择依赖其他第三方库 依赖选择yes 否则选择 no,可以先不填写,选择yes后根据自己,目所依赖的库进行搜索 然后进行版本号选择

    Would you like to define your dev dependencies (require-dev) interactively [yes]? 是否需要require-dev 选择yes 否则选择 no

    Do you confirm generation [yes]? yes 是否生成composer.json 确认compose.json文件没有问题 选择yes

如果使用github 这里还会提问 是否把生成的vendor目录放到.gitignore文件隐藏 这里选择 yes然后当前目录下会出现一个composer.json 文件 然后将初始化生成的composer.json文件上传到github仓库( https://github.com/epimetheusQ/omnimate.git )

我们看下生成的结果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
{    
"name": "epimetheus/omnimate",   
"description": "composer创建library,创建一个omnimate的包,减少phper的工作时间,让他们尽情的玩耍!抽空恋爱。",   
"type": "library",   
"license": "MIT",   
"authors": [       
{           
"name": "wuerqiQs",           
"email": "it_527@163.com"       
}   
],   
"minimum-stability": "stable",   
"require": {       
"php": ">=7.2"   
},   
"autoload": {       
"psr-4": {           
"Epimetheus\\Omnimate\\": "src/"       
}   
}
}

# 其中autoload下面是我们自己添加的,psr-4中的文件目录是当你使用composer require 目录后,项目会自动根据这个目录去引入你的文件,我们的git地址是:https://github.com/epimetheusQ/omnimate,所以我们的文件目录设计为如上的目录地址

目录格式:
epimetheus
-omnimate
--src
--composer.json
--license.md

将github的包注册至Package.org

  1. 进入https://packagist.org  首先要在 Packagist 上注册账号并登录(可以用 GitHub 直接登录)
  2. 点击顶部导航条中的 Summit 按钮在输入框中输入 GitHub 上的刚才包地址,如:https://github.com/epimetheusQ/omnimate
  3. 点击 Check 按钮 Packagist 会去检测此仓库地址的代码是否符合 Composer 的 Package 包的要求检测正常的话,会出现 Submit 按钮,再点击一下 Submit 按钮,我们的包就提交到 Packagist 上了

使用git hub 进行登录,git信息会自动同步至包中

git 更新包

发布到Packagist.org在发布到Packagist之前,我们需要在Github创建仓库来存储我们的代码才能提交到Packagist,最好是发布正式版本,进入我们仓库的Github主页,找到导航上“releases”,点击进去创建一个版本,填写好信息之后就可以发布版本了,或者在push到Github的时候带上tag标签推送

git add .
git commit -m ‘xxx’
git push origin xxx分支
git tag v1.0 -a
git push –tags

注意:我们包的命名空间是: Epimetheus\Omnimate{XXXX};

查看 package.org

惊奇的发现,git上的tag已经上传至这里了。

安装

composer require epimetheus/omnimate

此处必须composer 2.0才能安装,如果不确定是1.x 还是 2.x,可以
composer –version
,如果是1.x ,使用
composer self-update –2
切换至 2.x

待解决问题

  1. 未了解版本稳定性机制
  2. 版本给的略显随意