composer之创建自己的包

BY JENNER · 2014年11月4日· 阅读次数:19

composer的出现,使得PHPer可以像java一样更加方便的管理代码。在composer没有出现之前,人们大多使用pear、pecl管理依赖,但是局限性很多,也很少有人用(接触的大多phper基本不适用pear管理依赖)。composer不仅仅能够解决依赖的问题,也可以在一定程度上解决造轮子的问题。

废话不多说,这篇主要记录如何创建自己的package。

大概步骤如下:

  1. 在github上创建一个项目(项目名称可以随意)
  2. 编写composer.json
  3. copy代码文件并修改命名空间
  4. https://packagist.org/上递交自己的包
  5. 设置github的hook

编写composer.json

先看一个示例:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

{

    "name":
"jenner/message_queue",

    "description":
"php
message queue wrapper"
,

    "license":
"MIT",

    "keywords":
[
"message
queue"
],

    "version":
"1.0.0",

    "authors":
[

        {

            "name":
"Jenner",

            "email":
"[email protected]"

        }

    ],

    "require":
{

        "php":
">=5.3.0"

    },

    "autoload":
{

        "psr-0":
{

            "Jenner\\Zebra\\MessageQueue":
"src/"

        }

    }

}

需要注意的几个字段说明如下:

name:包名称,递交时packagist会检测报名字是否合法。必须是一个/分隔的字符串。当别人引入你的包时,vendor下会自动创建这个目录。例如org/package包,则会在vender下创建org/package目录。

autoload:包的加载方式,具体加载方式可以参考composer中文网说明。这里使用的是psr-0标准加载方式。composer会在src目录下根据命名空间执行自动加载。

copy代码修改命名空间

composer.json文件修改后,我们需要把要打包的源文件复制过来。这里我把所有的文件放在了src目录下,后面可能会有和src同级的tests等目录,而这些目录是不会被加载的。src目录下需遵循psr-0标准。命名空间和目录定义要一直。例如Namespcae/SubNamespace命名空间,则src下必须有Namespace/SubNamespace目录。

代码编写标准可以参考psr-0、psr-1标准

递交自己的包

pacagist开放递交,你可以任意递交自己的包,当然,要符合一定规则。

packagist右上角有一个submit package的按钮,点击会跳转到递交页面,如下图:

然后在文本框中输入你在github上创建的项目的git地址。packagist会自动检测是否合法。如果合法点击递交即可递交自己的包了。

你可能需要在github上面发布几个release,这样packagist才会认定你的包是稳定的,否则只能required开发包。

设置github的hook

版本控制工具大多支持hook,用于代码递交时触发一个事件,将代码同步到其他环境中。在github上设置hook后,我们每次pull,都会自动同步到packagist上,这样就不需要我们手动强制同步了。具体操作可以参见packgist的说明,操作很简单,耐心看下应该问题不大。

最后,如果别人使用了这个包。他的vendor目录下就会产生jenner/message_queue目录,其下的内容就是你github上的代码了,结构是完全一致的。

原创文章,转载请注明: 转载自始终不够

本文链接地址: composer之创建自己的包

时间: 2024-12-08 10:20:14

composer之创建自己的包的相关文章

创建一个ROS包

先前笔者不知道catkin到底是个什么东东,后来终于在官方网站上找到了答案,原来catkin是ROS的一个官方的编译构建系统,是原本的ROS的编译构建系统rosbuild的后继者.catkin的来源有点复杂,我们可以慢慢的讲一下其中的渊源.ROS来源于Willow Garage这个公司,他们希望借助开源的力量,使ROS发扬光大.而在英语中,willow的意思是柳树,catkin是柳絮的意思,为了纪念的作用吧,因而为这个软件命名为catkin.      这篇博客的主要内容是介绍如何使用catki

Windows下用Composer引入官方GitHub扩展包

Windows下用Composer引入官方GitHub扩展包 1. 当你打开威武RC4版本的链接的时候,往下拉你可以看到这个,然后你要做的就是想到,百度Composer,看看是个什么鬼,别想太多,跟着我走.接下来点击Composer中文文档,再点击下载你会看到下载完后,点开如图所示点击next后发现不知道怎么继续,正常,这里是提示你选择php文件夹下面的php.exe文件,这里我选好再截图如下:到这里一般再点击下一步等上三分钟左右就没什么问题啦,这个随便你个人喜好,我是没有点直接一直next到f

在存放源程序的文件夹中建立一个子文件夹 myPackage。例如,在“D:\java”文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage)。在 myPackage 包中创建一个YMD类,该类具有计算今年的年份、可以输出一个带有年月日的字符串的功能。设计程序SY31.java,给定某人姓名和出生日期,计算该人年龄,并输出该人姓名、年龄、出生日期。程序使用YM

题目补充: 在存放源程序的文件夹中建立一个子文件夹 myPackage.例如,在"D:\java"文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage).在 myPackage 包中创建一个YMD类,该类具有计算今年的年份.可以输出一个带有年月日的字符串的功能.设计程序SY31.java,给定某人姓名和出生日期,计算该人年龄,并输出该人姓名.年龄.出生日期.程序使用YMD的方法来计算年龄. 主要考包的运用 用到java.util.Calendar

用命令行工具创建 NuGet 程序包

NuGet.exe 下载地址 本文翻译自: https://docs.nuget.org/Create/Creating-and-Publishing-a-Package https://docs.nuget.org/Create/Enforced-Package-Conventions 基本步骤 使用 nuget spec 命令生成 nuspec 文件 编辑 nuspec 文件,使用 nuget pack 命令打包 从程序集创建程序包 执行以下命令:生成  nuspec 文件: nuget s

创建存储过程,包及包体

1 --创建包 2 create or replace package PAK_ExecuteAttendingDoctor is 3 type cp_results is ref cursor; 4 procedure ExecuteAttendingDoctor(start_time in varchar2,end_time in varchar2,cp_results out cp_results); 5 end PAK_ExecuteAttendingDoctor; 1 --创建包体 2

创建ROS功能包(四)

为了方便直接用ROS的create-pkg命令行工具 roscreate-pkg chapter2_tutorials std_msgs rospy roscpp std_msgs 包含了常见的消息类型,表示基本数据类型和其他的基本的消息构造,如多维数组. rospy 一个ROS的纯Python客户端库. roscpp 使用c++实现ROS的各种功能. 如果所有步骤正确执行,显示结果 编译功能包 rosmake chapter2_tutorials 几秒后,你会看见: 如果没有错误信息提示,说明

创建自启动jar包

1.在IDE里打包一个 jar 项目 2.到 target 目录下复制出jar包,可以把这个 jar 包的名字修改 3.解压,打开 META-INF/MANIFEST.MF,在最后一行添加内容如下: Main-Class: com.test.HelloWorld(类的全路径名,后面不要以.class结尾) 注意: (1)Class:后面,也就是冒号后面要添加一个空格,否则会打包时会出现异常 Java.io.IOException: invalid header field (2)行末要添加一个回

如何正确使用 Composer 安装 Laravel 扩展包

我们经常要往现有的项目中添加扩展包,有时候因为文档的错误引导,如下图来自 这个文档 的: composer update 这个命令在我们现在的逻辑中,可能会对项目造成巨大伤害. 因为 composer update 的逻辑是按照 composer.json 指定的扩展包版本规则,把所有扩展包更新到最新版本,注意,是 所有扩展包,举个例子,你在项目一开始的时候使用了 monolog,当时的配置信息是 "monolog/monolog": "1.*", 安装的是 mon

【转】正确的 Composer 扩展包安装方法

简单解释 composer install - 如有 composer.lock 文件,直接安装,否则从 composer.json 安装最新扩展包和依赖: composer update - 从 composer.json 安装最新扩展包和依赖: composer update vendor/package - 从 composer.json 或者对应包的配置,并更新到最新: composer require new/package - 添加安装 new/package, 可以指定版本,如: