Composer 入门

作者: wudanyang | 来源:发表于2018-10-11 10:44 被阅读16次

    安装 composer

    https://docs.phpcomposer.com/00-intro.html

    curl -sS https://getcomposer.org/installer | php
    

    配置 composer.json

    {
        "require": {
            "用户名/包名称": "版本号",
            "monolog/monolog": "1.0.*",
            "knowbox/susuan-common-libs": "^1.0",
        },
        "repositories": {
            // 从哪里找到这个包
            // 可以使用命令行的方式指定
            // composer config repositories.knowbox/susuan-ocr-libs vcs git@gitee.com:knowbox_server_dev_group/susuan-ocr-libs.git
            "knowbox/susuan-common-libs": {
                "type": "vcs",
                "url": "git@gitee.com:knowbox_server_dev_group/susuan-common-libs.git"
            },
            "knowbox/susuan-ocr-libs": {
                "type": "vcs",
                "url": "git@gitee.com:knowbox_server_dev_group/susuan-ocr-libs.git"
            }
        }
    }
    

    版本号

    版本号语法

    1. 指定版本 1.0.2
    2. 范围 ~1.0 或 ^1.0

    ~ 和 ^ 的区别

     ~和^的意思很接近,在x.y的情况下是一样的都是代表x.y <= 版本号 < (x+1).0,但是在版本号是x.y.z的情况下有区别,举个例子吧:
    ~1.2.3 代表 1.2.3 <= 版本号 < 1.3.0 (小版本号)
    ^1.2.3 代表 1.2.3 <= 版本号 < 2.0.0 (大版本号)
    

    安装

    composer install

    1. 下载项目到 vendor/用户名/包名
    2. 创建一个 composer.lock 项目

    注:在 .gitignore 中加入 vendor, 将 composer.lock 加入版本库

    composer.lock

    如果包在 composer.lock 中能够找到,那么就不会去 composer.json 中去找。

    所以如果有 composer.lock 文件时,可以保证项目的其他参与人员 composer install 的时候包的版本时一致的。


    自动加载

    项目加载时要加上这一个语句。

    require(__DIR__ . '/../../vendor/autoload.php');
    
    {
        "autoload": {
            "psr-4": {
                // 命名空间 与 目录的对应关系
                // 命名空间后面必须是两个反斜线
                "Acme\\": "src/"
            }
        }
    }
    

    PSR-4 标准

    PSR-4使代码更加规范,能够满足面向package的自动加载,它规范了如何从文件路径自动加载类,同时规范了自动加载文件的位置。

    https://www.php-fig.org/psr/psr-4/

    真正的 autoloader

    image-20181011095916792

    更新

    composer update

    根据 composer.json 中的版本匹配规则更新到最新版本(所有包)。并更新 composer.lock

    composer update 用户名/包名

    更新 composer.json 中指定的包。并更新 composer.lock


    创建自己的包

    {
      "name": "knowbox/susuan-ocr-libs", // 用户名/包名   (如果不用发布为一个库的话,那么不用指定 name)
      "description": "ocr common service", // 简介
      "type": "library", //
      "authors": [
        {
          "name": "Wu Danyang",
          "email": "wudy1@knowbox.cn"
        }
      ],
      "autoload": {
        "files": [
          "Config/OcrCacheKey.php" // 自动加载的文件
        ],
        "psr-4": {
          "Ocr\\Common\\": "Common/" // 按照 psr-4 映射的命名空间与路径
        }
      },
      "require": {
        "php": ">=7.1", // 平台软件包版本
        "yiisoft/yii2": "^2.0"
      }
    }
    

    设置包的版本号

    手动创建

    {
        "version": "1.0.0"
    }
    

    根据标签(tag) 或者分支名称创建

    标签

    对于每一个看起来像版本号的标签,都会相应的创建一个包的版本。它应该符合 'X.Y.Z' 或者 'vX.Y.Z' 的形式,-patch-alpha-beta-RC 这些后缀是可选的。在后缀之后也可以再跟上一个数字。

    下面是有效的标签名称的几个例子:

    • 1.0.0
    • v1.0.0
    • 1.10.5-RC1
    • v4.4.4beta2
    • v2.0.0-alpha
    • v2.0.4-p1

    分支

    对于每一个分支,都会相应的创建一个包的开发版本。如果分支名看起来像一个版本号,那么将创建一个如同 {分支名}-dev 的包版本号。例如一个分支 2.0 将产生一个 2.0.x-dev 包版本(加入了 .x 是出于技术的原因,以确保它被识别为一个分支,而 2.0.x 的分支名称也是允许的,它同样会被转换为 2.0.x-dev)。如果分支名看起来不像一个版本号,它将会创建 dev-{分支名} 形式的版本号。例如 master 将产生一个 dev-master 的版本号。

    下面是版本分支名称的一些示例:

    • 1.x => 1.x-dev
    • 1.0 (equals 1.0.x) => 1.0.x-dev
    • 1.1.x => 1.1.x-dev

    其他

    提高包下载速度

    详见 composer 中国镜像:https://pkg.phpcomposer.com/

    提高 yii2 install 速度

    Yii2 composer install 的时候会加载一些无用的包

    可以参考以下不安装依赖,提高 install 速度:

    https://github.com/yidas/yii2-bower-asset

    git tag

    git tag -a ( -s -u )   tagname -m "message" # 打 tag
    
    git tag -l 'v-*' # 列出 tag
    

    参考文档

    Composer 中文网

    相关文章

      网友评论

        本文标题:Composer 入门

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