编写自己的composer项目

 

composer的出现给php开发带来极大的便利, 配合phpunit的测试工具, 也可以更好的规范php开发. 尽管这些标准不是官方提供的, 但现在大部分的php框架几乎都按照这个规范去开发和管理项目. 这里先介绍一下怎么去编写自己的composer项目

一. 创建github项目

可以参考我的项目地址 https://github.com/yin32167/cpstpl

 

config 配置文件存放的位置
src 源代码
tests 测试文件位置

.gitignore git忽略文件
LICENSE.md 项目许可证
README.md 项目介绍
composer.json composer配置文件
phpunit.xml phpunit配置文件

1. 关于.gitignore配置

执行composer install会生成composer.lock文件, 并将相关的依赖下载到vendor文件夹, 所以这两个文件是需要忽略的

2. 关于LICENSE.md内容

这个看大家项目的具体目的, 对于开源项目来讲, 用MIT协议比较常见

3. 关于README.md内容

主要是介绍项目基础信息及用法, 项目的github页面会将内容显示出来, 以markdown格式

二. 配置 composer

  1. 安装composermac用户可以使用homebrewwindows用户可以直接下载安装包安装

https://pkg.phpcomposer.com/#how-to-install-composer

注意确保composer命令在环境变量中

  1. 配置中国镜像: 由于国外镜像速度太慢, 影响开发效率
  1. 编辑配置文件

require: 由于composerphp的包管理工具, 所以需要依赖php环境, 这里我们建议使用php7以上版本, 毕竟各方面都有很大的提升
require-dev: 一般加载测试相关的包
autoload: 指定自动加载的文件夹, 现在一般采用psr-4标准

 

会生成composer.lockvendor文件夹. 如果修改了composer.json, 但之前已经生成了composer.lock, 此时需要执行composer update, 配置才能生效

三. 添加 phpunit

  1. 安装

Windows 用户具体参见 http://www.phpunit.cn/manual/current/zh_cn/installation.html#installation.phar.windows
一定要确保phpunit在环境变量中

  1. 编辑配置文件phpunit.xml

bootstrap指定启动测试时, 先加载vendor/autoload.php
testsuite指定测试文件的目录
filter过滤依赖文件的位置

  1. 执行测试样例
 

四. 上传到 packagist

  1. 先注册, 需要关联github

https://packagist.org

  1. 创建composer模块名称, 尽量和github一致就好

     
  2. 检测提交

 

如果你没按照它的规范, 会提示失败, 并给出原因, 只需按照修改即可.

附:

如果github中存在多个branch, 则在生成composer模块的时候会打包对应dev-分支名版本号, 如果不希望出现dev, 也就是看起来是正式版本, 需要在githubtag, 此时会以tag的名称作为版本号而不会加上dev

编写自己的composer项目的更多相关文章

  1. 用Spring3编写第一个HelloWorld项目

    第一个HelloWorld程序 让我们用Spring来写第一个应用程序吧. 完成这一章要求: 熟悉Java语言 设置好Spring的环境 熟悉简单的Eclipse IDE的操作 如果你还没有设置好环境 ...

  2. PHPUnit 在phpstrom中composer项目的应用配置

    在phpstorm的composer搭建的项目调试时出现这种错误时:是其配置的错误 'Cannot create phar '/data/AppStorm/DesignPatternsPHP/vend ...

  3. 【微信小程序】使用vscode编写微信小程序项目

    1. 在微信开发者工具(以下简称:开发者)中新建一个模板微信小程序 2. 在开发者中将模拟器分隔开 3. 设置在保存时编译 4. 在vscode中打开项目目录 5. 下载代码提示插件 这样就可以在vs ...

  4. Composer项目安装依赖包

    说明:一般用Composer的项目中,目录下都有一个composer.json文件,安装这些依赖,只需要输入命令即可 步骤: cmd进入项目目录,运行命令即可 composer install 文章参 ...

  5. Vue.js结合vue-router和webpack编写单页路由项目

    一.前提 1. 安装了node.js. 2. 安装了npm. 3. 检查是否安装成功: 打开cmd,输入node,没有报“node不是内部或外部命令”表示安装成功node.js. 打开cmd,输入np ...

  6. 编写自己的starter项目(battcn-starter-swagger)

    自定义 starter 项目,方便其他地方调用,类似 spring.datasource.url 这种,本次以自己封装的 battcn-starter-swagger 为案例 创建一个Maven工程 ...

  7. 编写一个飞行棋项目(C#)遇到几个问题:

    在写程序中遇到如下问题:如果有人知道,请您一定要指点迷津.小白. 1.在运行暂停功能时,这个暂停功能可以实现,但是无法显示提示信息. case 3: Console.Clear(); Program. ...

  8. Flutter实战视频-移动电商-02.Flutter实战建立项目和编写入口文件

    02.Flutter实战建立项目和编写入口文件 创建项目: flutter create flutter_shop 创建完成之后呢,它会提示我们, 进入flutter_shop的目录,然后执行flut ...

  9. 手工编写JavaWeb项目

    手工编写JavaWeb项目 一.打开Tomcat服务器 二.编写简单的web项目 三.访问项目 并且,tomcat服务器也是可以直接访问.txt的,其实就和其它的web服务器一样,什么都可以访问,和之 ...

随机推荐

  1. python 约束与异常处理

    一.类的约束 1.约束就是对类的约束.其实就是父类对子类进行约束,子类必须要写xxx方法. 2.抽象:就是当我们没法对一个功能或者一个属性进行精确的表述,一般都采用抽象的方式给出. (1)抽象类的书写 ...

  2. centos7+nginx负载均衡Tomcat服务

    接着上一篇:www.cnblogs.com/lkun/p/8252815.html 我们在上一篇在一台centos7服务器上部署了两个nginx,接下来我们使用一个nginx实现tomcat的负载均衡 ...

  3. 【转】ffmpeg 常用命令

    1. 视频转换 比如一个avi文件,想转为mp4,或者一个mp4想转为ts. ffmpeg -i input.avi output.mp4 ffmpeg -i input.mp4 output.ts ...

  4. Python脱产8期 Day10 2019/4/24

    一 函数 1.定义:完成 特定 功能的代码块,作为一个整体,对其进行特定的命名,该名字就代表函数>>工具. 2.函数的优点:1.避免代码的冗余:2.让程序结构代码更加清晰:3.让代码更加具 ...

  5. python:利用configparser模块读写配置文件

    在自动化测试过程中,为了提高脚本的可读性和降低维护成本,将一些通用信息写入配置文件,将重复使用的方法写成公共模块进行封装,使用时候直接调用即可. 这篇博客,介绍下python中利用configpars ...

  6. Python协程(真才实学,想学的进来)

    真正有知识的人的成长过程,就像麦穗的成长过程:麦穗空的时候,麦子长得很快,麦穗骄傲地高高昂起,但是,麦穗成熟饱满时,它们开始谦虚,垂下麦芒. --蒙田<蒙田随笔全集> *** 上篇论述了关 ...

  7. 如何备份和恢复你的TFS服务器(一)

    备份和恢复一个TFS(Team Foundation Server)服务器常常令人心生畏惧.因为这会涉及到很多服务和步骤.TFS(Team Foundation Server)2010一发布,我就知道 ...

  8. 【php增删改查实例】第二十六节 - 个人详情页制作

    在一般的系统中,当用户点击头像的时候,就会跳转到对应的个人详情页,在这个页面,他可以查看和修改自己的个人信息,或者更换头像. 本案例中,个人详情页使用bootstrap框架. 首先,我们新建一个htm ...

  9. 分布式系统消息中间件——RabbitMQ的使用基础篇

    分布式系统消息中间件——RabbitMQ的使用基础篇

  10. Linux Namespace : Network

    Network namespace 在逻辑上是网络堆栈的一个副本,它有自己的路由.防火墙规则和网络设备.默认情况下,子进程继承其父进程的 network namespace.也就是说,如果不显式创建新 ...