工具链程序员

Composer 入门

2018-10-11  本文已影响16人  wudanyang

安装 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 这些后缀是可选的。在后缀之后也可以再跟上一个数字。

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

分支

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

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

其他

提高包下载速度

详见 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 中文网

上一篇 下一篇

猜你喜欢

热点阅读