从零创建发布属于自己的composer包

2次阅读

共计 1645 个字符,预计需要花费 5 分钟才能阅读完成。

原文地址:https://www.wjcms.net/archive…

今天给大家讲解一下如何从零创建发布属于自己的 composer 包。

composer 包用起来确实非常方便,深受 php 开发者的青睐,但是如何创建自己的包呢?我们一起来看一下。

准备工作

  1. 注册并登录 github 账户,https://github.com/
  2. 安装好 git 软件:https://git-scm.com/download/win
  3. 注册登录 packagist 账户:https://packagist.org/,并与 github 进行关联

创建线上仓库

打开 github, 点击右上角加号,选择 new repository

而后,进行相关设置,如下图:

这里需要输入项目名称,描述,是否公开,是否初始化 readme,git 忽略文件,以及开源协议等信息。
相关选项可以自行研究一下。

然后,点击 create repository 按钮创建仓库。

拉取线上仓库到本地

完成上面的操作化,会成功后会跳转到仓库页面。

然后点击右侧的 code 按钮,然后再点击复制此仓库的 git 地址。

回到本地,打开 git 软件,运行 clone 命令拉取

git clone https://github.com/wjcms/composer-test.git

composer 初始化

先进入项目目录,在 git 中命令

cd composer-test

然后运行初始化命令

composer init


详细设置见上图。

注意:package type :library 是仓库,对应提交后的 require 命令,project 是项目,下载后直接能跑起来的,对应 create-project 命令。

配置 autoload

初始化完毕后,打开本地的 composer.json 文件夹可以进行修改。
附上我的 composer.json 文件, 上面有详细注释

注运行时候不能加注释,不然会报错跑不起来

{
    "name": "wjcms/composer-test",# 包名称
    "description": "composer-test description",# 包描述信息
    "type": "project",# 类型,可选 e.g. library, project, metapackage, composer-plugin
    "license": "MIT",# 开源协议
    "authors": [
        {
            "name": "wjcms",# 作者
            "email": "wjcms@qq.com"# 邮箱
        }
    ],
    "minimum-stability": "stable",# 版本限制 dev 开发版 stable 稳定版
    "autoload":{
        "files":["src/lib/helper.php"# 载入助手函数],
        "psr-4":{ # 自动加载: 注意了, 这里有 psr-4, psr-2 多种规范, 并且, 注意目录和命名空间
            "wjcms\\composer\\":"src"# 载入命名空间
        }
    }
}

更改完毕后进行保存,而后运行命令重新载入。

composer dump-autoload

创建基本包代码

基本目录

这里对应上面的 autoload->psr- 4 里面的配置,还有 flies 配置
先创建一个 src 目录,创建 helper.php,Database.php

提交到 github 仓库

切换到本地目录

cd composer-test

然后运行命令 git add . 命令,把文件提交到本地仓库

git add .

然后 git commit -m 添加提交注释

git commit -m '第一个 composer 包'

然后 git push 进行提交,把文件提交到 github

git push

然后输入 github 账户用户名密码,即可成功提交。

提交到 packagist

打开 github 项目地址,复制网址:如 https://github.com/wjcms/comp…
打开 https://packagist.org/, 右上角 …

然后把 github 项目地址粘贴到框中

点击提交,如果有重名的会提示,不用管直接点 submit


看到下图,就成功了。

可以复制命令试一下是否能成功。

正文完
 0