PHP-Composer包开发、发布流程

Composer对与分发自己的PHP软件包,方便别人引用来说是很好的一种方式。平时开发中经常会用到Composer来引入三方的优质软件包,例如 Laravel、easywechat等等,如果我们有一些好的想法如果分发出去呢?下面我们就一步步来告诉大家如何实现自己的第一个Composer包。

初始化项目

首先创建composer.json文件用于声明包基本信息。

{
"name": "jake/dev-package", # 包名,格式为 vendor/package-name vendor用于避免冲突
"description": "软件包描述",
"autoload": { # 自动载入规范
"psr-4": {
"Jake\Package\": "src"
}
}
}

配置好之后就可以在src目录编写项目逻辑,这里我们声明了自动载入符合psr-4规范。

本地引用软件包

在为上传到仓库之前,我们可以使用本地路径来引入

{
    "name": "jake/application",

    ...

    "repositories": {
      "dev-package": {
        "type": "path",
        "url": "relative/or/absolute/path/to/my/dev-package",
        "options": {
          "symlink": true
        }
      }
    }
}

配置中的“type”: “path” 表示引入的是一个本地仓库,url定义了包的路径,路径可以使用相对路径或绝对路径。

虽然设置了type和url后就可以开发了,但是composer会复制包的代码到vendor目录,而且每次包发生变更都要执行composer update

为了避免更新执行update操作,可以通过设置”symlink”: true参数让composer创建一个软链接到包所在目录

最后一步操作就是使用composer require命令来引入软件包。

composer require jake/dev-package @dev

发布到公网

1、 发布到外网首先需要把代码提交到vcs服务器,并且设置为可公开访问。

2、 然后注册 packagist 帐号用于发布,用邮箱即可注册。

3、 登录packagist后可通过 submit 页面发布composer包,发布时需要填写可公开访问的vcs地址。如下图

点击Check跟着向导走即可完成发布。

提示
包名中的vendor不可与他人发布的重复。


使用

composer require "kyfjake/lumen-swoole:version"

版本号规则

  1. dev-branch-name表示使用某一个分支版本,对应vcs中的分支
  2. vxx.xx.xx 表示使用xx.xx.xx版本,对应git中的标签 vxx.xx.xx


版本号匹配规则见: 官方文档composer包版本命名及限定规则
 

相关链接

  1. PSR-4
  2. composer autoload
  3. packagist
  4. 阿里云 Composer 全量镜像

作者:合一研发部-郭建超

相关推荐

  1. 如何发布自己的npm,详细流程

    2024-03-14 19:44:01       36 阅读
  2. gorse修改开源项目后,如何使用Docker compose发布

    2024-03-14 19:44:01       9 阅读
  3. php composer安装

    2024-03-14 19:44:01       44 阅读
  4. php开发中如何防止抓工具伪造请求

    2024-03-14 19:44:01       18 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-14 19:44:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-14 19:44:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-14 19:44:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-14 19:44:01       20 阅读

热门阅读

  1. 探索信号处理:低通滤波器的原理与应用

    2024-03-14 19:44:01       17 阅读
  2. ts中高阶类型的理解

    2024-03-14 19:44:01       17 阅读
  3. 最少刷题数

    2024-03-14 19:44:01       16 阅读
  4. 工作随记:oracle重建一张1T数据量的大表

    2024-03-14 19:44:01       16 阅读
  5. c#计算闰年

    2024-03-14 19:44:01       20 阅读
  6. 基于ElasticSearch的海量AIS数据存储方法

    2024-03-14 19:44:01       23 阅读
  7. 【Python】-闲聊:如何系统的自学Ptyhon

    2024-03-14 19:44:01       24 阅读
  8. PHP序列化基础知识储备

    2024-03-14 19:44:01       19 阅读
  9. Oracle——用户、角色、权限的创建、删除、修改

    2024-03-14 19:44:01       20 阅读
  10. day2-C++

    day2-C++

    2024-03-14 19:44:01      16 阅读
  11. 当代计算机语言占比分析

    2024-03-14 19:44:01       23 阅读
  12. 文件系统事件监听

    2024-03-14 19:44:01       22 阅读
  13. 【OpenGL经验谈01】Vertex 规范最佳实践

    2024-03-14 19:44:01       22 阅读
  14. SpringCloud中Gateway提示OPTIONS请求跨域问题

    2024-03-14 19:44:01       18 阅读