Composer — 别名

别名 个人理解:Composer 为了 “兼容” VCS 提供不可比较的版本号。官方文档举例 Github 的 master 、bugfix 分支,在 Composer 里就成了不可比较的版本号。这样会造成的问题:如果 master 分支使用标签发布了 1.0.1、1.0.2、1.03 等 1.0 系列的版本,这个版本号都可以通过 Composer 的版本约束 1.0.* 来匹配到。但有人想要使用最新的 master 版本,版本约束 1.0.*  无能为力。

为了兼容 可比较版本 和 不可比较版本,Composer 采用 别名 解决这个问题。别名包括 分支别名 和 行内别名。Composer 在兼容 VCS 时会在不可比较的版本前加 dev-;在可比较版本后加 -dev

分支别名

要使用分支别名(branch-alias),你需要对源码拥有控制权,并提交别名修改到你控制的版本库。例如:我现在本地项目要依赖 包A,那么我在版本控制系统(例如 github)里修改 包A 的composer.json,使用 extra 字段添加别名:

"extra": {
    "branch-alias": {
        "dev-master": "1.0.x-dev"
    }
}

上面将 dev-master 别名为 1.0.x-dev,接上面的例子,使用版本约束 1.0.* 就可以通过匹配 1.0.x-dev 间接匹配 dev-master。

如果你不是 包A 的所有者,可以考虑将其 fork 到自己的版本库;如果既不是所有者也不想 fork,就使用下面的 行内别名

行内别名

假设对 包A 没有控制权,通过 行内别名 匹配下载 dev-master 版本。修改本地项目根目录下的 composer.json 文件。

{
    "require": {
        "symfony/monolog-bundle": "2.0",
        "monolog/monolog": "dev-master as 1.0.x-dev"
    }
}

上面依赖两个包:symfony/monolog-bundle 和 monolog/monolog。通过对 monolog/monolog 版本约束 dev-master as 1.0.x-dev ,将其 dev-master 别名为 1.0.x-dev,就能满足 symfony/monolog-bundle 包对 monolog/monolog 包版约束为为 1.* 对要求。

动手一下

挑选两个包:valu/wp-testing-tools 和 monolog/monolog,monolog/monolog 包定义了 分支别名,valu/wp-testing-tools 包有不可比较版本 dev-master 和 dev-stable。 monolog/monolog 包定义 dev-main 分支 别名为 2.x-dev。

"extra": { "branch-alias": { "dev-main": "2.x-dev" } },

1、使用 2.* 和 0.6.* 约束:

"require": {
    "monolog/monolog": "2.*",
    "valu/wp-testing-tools": "0.6.*"
}

查看到两个包都没有安装 dev-master,

monolog/monolog       2.2.0  Sends your logs to files, sockets, inboxes, databases and various web services
psr/log               1.1.4  Common interface for logging libraries
valu/wp-testing-tools v0.6.0 Testing tools for WordPress

2、使用 2.*@dev 和 0.6.*@dev 约束:

"require": {
    "monolog/monolog": "2.*@dev",
    "valu/wp-testing-tools": "0.6.*@dev"
}

两个包都加入了 dev 稳定性约束,2.*@dev 版本约束可以匹配到 monolog/monolog 包别名 2.x-dev,所以看到 monolog/monolog 包升级到了 dev-main 版本,valu/wp-testing-tools 包仍然处在 v0.6.0 版本。

monolog/monolog       dev-main bac1ddd Sends your logs to files, sockets, inboxes, databases and various web services
psr/log               1.1.4            Common interface for logging libraries
valu/wp-testing-tools v0.6.0           Testing tools for WordPress

使用包详细信息命令:show 或 info,查看 monolog/monolog 包 versions 字段,可以看到版本号除了 dev-main,还有 2.x-dev。

versions : * 2.x-dev, * dev-main

而 valu/wp-testing-tools 包 versions 字段只有 0.6.0

versions : * v0.6.0

3、dev-master as 0.6.*-dev 约束:

"require": {
    "monolog/monolog": "2.*@dev",
    "valu/wp-testing-tools": "dev-master as 0.6.x-dev"
}

 使用 行内别名,将 valu/wp-testing-tools 包 dev-master 别名为 0.6.x-dev 可以顺利安装上 dev-master。

monolog/monolog       dev-main bac1ddd   Sends your logs to files, sockets, inboxes, databases and various web services
psr/log               1.1.4              Common interface for logging libraries
valu/wp-testing-tools dev-master 9d2b038 Testing tools for WordPress

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值