编写自己的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. 《Java大学教程》—第5章 数组

    5.6 增强的for循环:访问整个数组,读取数组元素,不基于数据下列5.7 数组方法:最大值.求和.成员访问.查找 1.答:P92存储固定个数相同数据类型的一组元素. 2.答:P92所有存储在一个特定 ...

  2. Maven中POM.XML详解

    转自https://blog.csdn.net/jariwsz/article/details/19554137 我们先看一个简单的例子: <project xmlns="http:/ ...

  3. [docker][win10]安装的坑

    右键这个小图标,先signin,注意这里是ID 不是邮箱   image.png 可能starting 时候就报错说 “Containers feature is not enabled” 或者   ...

  4. 寒假特训——I - Fair

    Some company is going to hold a fair in Byteland. There are nn towns in Byteland and mm two-way road ...

  5. Android面试题目整理与解说(二)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/bz419927089/article/details/31386787 1.Dalvik和标准Jav ...

  6. Ubuntu16.04环境安装jenkins

    前提:系统必须安装jdk 如果没有安装可通过如下命令安装: sudo add-apt-repository ppa:openjdk-r/ppa sudo apt update sudo apt ins ...

  7. CentOS下安装PHP

    今天終於進行了第三次的在linux下的php安裝,在安裝之前我進行了網站訪問測試. 第一步,先查看mysql.apache這兩項系統服務是否已經自動啟動了,chkconfig –list mysql. ...

  8. Django适合做大用户量的系统吗?

    分几点来答: 1. 首先,这其实是个技术选型题. 做技术选型的时候不能单纯的考虑性能,应该优先考虑业务类型,以及团队水平.另外的话,框架只是其中一环,还有配套呢. 如果是数据驱动型,尤其是要用到关系型 ...

  9. C# 生成编号(防并发)

    今天抽了点时间,写了一个通用的生成编号的程序! 我的生成规则为年月日+两位编号,即:yyyyMMdd+两位编号,譬如:2018101001 / 2018101002 / 2018101003 首先,一 ...

  10. AndroidO bluedroid alarm 机制分析

    bluedroid的alarm 机制实现在osi/osi/src/alarm.cc 中: 这里面实现了很多的接口: alarm_t* alarm_new(const char* name): alar ...