现实问题
之前同事做了一个 composer package,做为公司大量 laravel 项目的通用模块。
但是,在实际使用中,每个项目对改 package 的依赖版本是有所不同的。否则 composer update 会默认拉取最新的 dev-master 中的代码。
术语
VCS Version control systems (VCS)
composer 依赖的 package 版本号来自哪里
实际上就是 VCS 中的版本号,例如,git 打的 version tag。
$ git tag
v1.0
v1.0.1
v1.0.2
composer 在识别 version 的时候,会自动过滤掉字母 ‘v’ 的前缀,所以,在打 tag 的时候,加不加 v 都是可以的。当然为了阅读方便,还是加上好。
解决方法
打 tag
git tag -a 'v2.0.0'
在 composer.json 中,除了要指明 git 项目地址之外,还需要在 require 中指定对应的版本号。
{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/igorw/monolog"
}
],
"require": {
"monolog/monolog": "2.0.0"
}
}
再执行
composer update monolog/monolog
Updating monolog/monolog (dev-master cd8c225 => v2.0.0): Checking out cd8c225955
参考
https://getcomposer.org/doc/articles/versions.md