从零开始建立一个Composer项目

简介

  • 移植好的FEApi类库,需要打包发布到composer 顺便记录一下。

建立项目

  • 首先申请Git Hub项目空间,这个不赘述了,我这里的项目空间是,https://github.com/kami1983/jk-laravel-feapi

  • 然后将git库clone 到本地,建立develop分支,不赘述了:


    image.png
  • 修改 vim .gitignore 添加如下内容:

composer.phar
/vendor/
.idea

初始化composer

  • 输入命令 composer init 根据提示输入如下内容:(视情况调整)
{
    "name": "klib/jk-laravel-feapi",
    "description": "一个简单的支持RESTful接口的前后端组件模块,从JKGlib框架下移植到Laravel框架",
    "type": "library",
    "require": {
        "php": ">=7.0.0",
        "laravel/framework": "5.5.*"
    },
    "require-dev": {
        "filp/whoops": "~2.0",
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "~1.0",
        "phpunit/phpunit": "~6.0",
        "symfony/thanks": "^1.0"
    },
    "license": "MIT",
    "authors": [
        {
            "name": "Kami1983",
            "email": "[email protected]"
        }
    ],
    "minimum-stability": "dev"
}


  • 初始化后,会得到一个 composer.json 文件,内容如上。

    image.png

  • 新增 autoload 段落,让autoload可以顺利的找到你的类库,将下面内容新增到 "minimum-stability": "dev: 下面即可(上面一行别忘了添加逗号以保证JSON格式正确):

    "autoload": {
        "psr-4": {
            "KLib\\FEApiLaravel\\": "src/FEApiLaravel"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\\": "src/tests/",
            "App\\": "src/tests/app"
        }
    }
  • 然后把要打包的代码COPY 到 src/FEApiLaravel 目录下面,命名空间注意调整为KLib\FEApiLaravel

  • 上面全部是准备工作,接下来要生成 vendor 目录,执行命令 composer install,安装过程可能有点久需要耐心等待。(也可以baidu一下用composer 中文镜像这样会快些。)

建立phpunit.xml

  • 我的配置如下:


    

        
          ./src/tests
        

    
    
        
            ./app
        
    
    
        
        
        
        
    



  • 接下来运行PHPUnit 查看测试是否通过:

  • 右击测试目录


    image.png
  • 点击执行 Run 'tests (PHPUnit)'

    image.png

  • 执行结果如下,我这里出了些问题:Fatal error: Uncaught Error: Class 'Tests\TestCase' not found in

    image.png

  • 为了解决如上问题需要配置Laravel 的基础框架Application,这个找一个Larvael项目作参考即可,或者可以参考我这个项目的test 目录 (https://github.com/kami1983/jk-laravel-feapi/tree/master/src/tests),如果你是拿来主义直接用我这里的配置即可。

  • 接下来执行测试看一下:(OK,没问题,基础测试全部通过了)


    image.png
  • 至此代码部分的配置全部完成。

发布类库到composer公网

  • 首先把这些代码传到建立项目申请的GitHub 项目空间中,然后给代码打上标签,这不赘述了,参考下图吧:


    image.png
  • 这是最终目的,那么一步一步来即可。

  • 登录packagist ,这可能需要账号,没有先申请。

  • 如下图点击提交项目:


    image.png
  • 复制仓库名称

image.png
  • 回到packagist 上粘贴输入点击check 按钮,这时候会核实信息后并让你二次确认,如果没问题点击submit。


    image.png
  • 提示添加成功,但是git 钩子有问题,无法和git 连动,接下来解决这个问题。


    image.png
  • 先获取Packagist网站上的Api Token 点击 用户名->Profile,COPY到剪切板,然后切换回github ,这个Token 值记录好。

  • 回到GitHub 项目上点击 settings -> webhook,填好Token

    image.png

  • 这时候回到Packagist 上应该就OK了

终极测试

  • 为了验证包的可用性,可以找一个Laravel 5.5.* 的项目测试一下
# 项目根目录输入如下命令:
composer require klib/jk-laravel-feapi

如果提示 Could not find a version of package XXXX matching your minimum-stability

  • 如果没有直接忽略这里的内容即可。
  • 需要特别注意一点,如果你使用的是国内的镜像源,由于刚刚更新的包可能是无法被同步到的,所以可以 composer config -g --unset repos.packagist 先卸载全局源对象,然后使用如上命令。
# 卸载当前的源对象
composer config -g --unset repos.packagist
# 设置默认源对象
composer config -g repo.packagist composer https://packagist.phpcomposer.com
# 清除缓存
composer clear
# 更新lock文件
composer update --lock

补充

  • 我们刚才填写的 "minimum-stability": "dev" 在 https://packagist.org/ 上就会识别所有分支,默认的 dev-* 开头的分支就会认为是稳定版本,如果没有找到那么会根据tag 选择默认的稳定版本

    image.png

  • 所以上面的配置是有优化空间的,请自行优化。

  • 感谢阅读。

你可能感兴趣的:(从零开始建立一个Composer项目)