美文网首页
开发一个属于自己的第一个Composer/Packagist包

开发一个属于自己的第一个Composer/Packagist包

作者: PHP菜鸡 | 来源:发表于2018-08-15 19:42 被阅读161次

    Composer 给我们带来了诸多的好处:

    • 模块化,降低代码重用成本
    • 统一的第三方代码组织方式
    • 更科学的版本更新

    初始化项目,生成composer.json文件

    初始实例项目代码目录结构:

    image

    现在要在项目的根目录里通过composer init命令创建一个composer.json的文件,也可以手动创建:

    composer init
    
    Welcome to the Composer config generator
    
    This command will guide you through creating your composer.json config.
    
    Package name (<vendor>/<name>) [administrator/mobile-push]: keke/hello
    Description []: this is example
    Author [keke <liutongke@live.com>, n to skip]:
    Minimum Stability []: dev
    Package Type (e.g. library, project, metapackage, composer-plugin) []:
    License []: MIT
    
    Define your dependencies.
    
    Would you like to define your dependencies (require) interactively [yes]?
    Search for a package:
    Would you like to define your dev dependencies (require-dev) interactively [yes]?
    Search for a package:
    
    {
        "name": "keke/hello",
        "description": "this is example",
        "license": "MIT",
        "authors": [
            {
                "name": "keke",
                "email": "liutongke@live.com"
            }
        ],
        "minimum-stability": "dev",
        "require": {}
    }
    
    Do you confirm generation [yes]?
    

    重要的几个填写项:

    1. Package name(重要):包名,一般是公司名+"/"+包名 比如 baocai/yprint
    2. Minimum Stability:通常默认填写dev,因为第一次代码Push完,是在dev-master分支上,dev也就是最小稳定版本标识号
    3. Package Type:根据库类别填写,sdk,lib,都可以
    4. License:版权,默认填写 MIT
    5. 接下来填写自身库需要的依赖,默认填no,后续可以在composer.json中补充修改

    根目录下就生成了composer.json文件,目录结构如下:

    image

    添加自动加载

    编辑生成的composer.json文件,添加php的版本要求和自动加载(使用PSR-4),加载src目录下的所有文件,如下

    {
      "name": "keke/hello",
      "description": "this is example",
      "license": "MIT",
      "authors": [
        {
          "name": "keke",
          "email": "liutongke@live.com"
        }
      ],
      "minimum-stability": "dev",
      "require": {
        "php": ">=7.0.0"
      },
      "autoload": {
        "psr-4": {
          "hello\\": "src/"
        }
      }
    }
    

    进行测试
    下面我们来简单测试下我们的类是否工作正常。我们在项目根目录执行composer install:

    Loading composer repositories with package information
    Updating dependencies (including require-dev)
    Nothing to install or update
    Writing lock file
    Generating autoload files
    

    生成的目录结构:

    目录结构

    创建测试文件

    下面我们在根目录下新建一个测试文件test.php

    require_once __DIR__ . '/vendor/autoload.php';
    use hello\Hello;
    echo Hello::world();
    

    执行成功出现hello world说明已经测试通过成功了,接下来就是将自己的第一个composer包发布到Packagist.org上了:

    image

    发布到Packagist.org

    将第一步中生成的项目文件,提交到GitHub

    git add .
    git commit -m 'composer init'
    git push
    

    提交到Packagist
    首先要在Packagist上注册账号并登录
    点击顶部导航条中的Summit按钮
    在输入框中输入github上的仓库地址
    然后点击Check按钮
    Packagist会去检测此仓库地址的代码是否符合Composer的Package包的要求
    检测正常的话,会出现Submit按钮,再点击一下Submit按钮,我们的包就提交到Packagist上了

    验证包安装
    以上步骤完成,就可以验证包是否能从库中查询到并且验证是否能够成功安装,特别注意,因为刚提交,还没有设置版本,此时版本默认是dev-master,如果直接require包名,会提示找不到对应版本,务必加上版本指定,这里是:dev-master
    php composer require wangyi-live/netease dev-master
      直接require包名,提示找不到对应版本错误提示(解决办法设置版本号):

    image

    设置版本

    版本默认是dev-master,Composer包的版本号会从Git的tag中同步过来,因此先设置项目代码的tag,回到项目目录

    git tag 1.0.0
    git push --tag
    

    相关文章

      网友评论

          本文标题:开发一个属于自己的第一个Composer/Packagist包

          本文链接:https://www.haomeiwen.com/subject/zlowbftx.html