今天我在composer update
内发现了一个我无法形容的奇怪错误。
{
"repositories": {
"my-plugin": {
"type": "vcs",
"url": "git@mycodebase.com:mjplug/myplugin.git"
}
},
"require": {
"my-plugin/myplugin": "0.0.9",
}
}
当我尝试composer update
时,我会得到
The requested package my-plugin/my-plugin 0.0.9 exists as my-plugin/my-plugin[0.0.6, 0.0.5] but these are rejected by your constraint.
但是在存储库中存在像0.0.7, 0.0.8, 0.0.9
这样的标签。为什么他们找不到?
如果我将~0.0.1
设置为版本限制,则可以使用,因为composer将安装0.0.6
。
任何提示?谢谢
编辑:这是我们的Bitbucket服务器实例的屏幕截图:http://imgur.com/a/m8lRT
编辑2:已解决:在最后一个版本中,我将composer.json因某种原因放到子目录中。所以这就是作曲家无法找到最新标签的问题。
答案 0 :(得分:3)
Composer允许通过将分支指定为dev-来使用分支作为版本,因此dev-master与主分支相关。如果要指定特定标记,则类似于
"author/package": "dev-master#v1.1.0"
另见链接:
答案 1 :(得分:3)
如Composer documentation所述,我会将您的代码更新为主分支上的v0.0.7
,v0.0.8
,v0.0.9
。因此应该帮助作曲家遵循所说的:
Composer首先要求VCS列出所有可用标记,然后根据这些标记创建可用版本的内部列表。在上面的例子中,作曲家的内部列表包括版本1.0,1.0.1,1.0.2,1.1的beta版本,1.1的第一和第二版本候选版本,最终版本1.1等等.... (请注意,Composer会自动删除实际标记名中的' v'前缀以获取有效的最终版本号。
在您的主人,"my-plugin/myplugin": "0.0.9"
或"my-plugin/myplugin": "0.0.*"
等上的这些标签应该正常工作。
答案 2 :(得分:1)
因为Wordpress插件文件需要位于子文件夹中,所以我将所有文件(包括composer.json)放到子目录中并推送新版本。
后来我尝试在我的项目中安装新版本,并且找不到新版本。这就是问题所在。 composer.json需要在root中。 (愚蠢的我)
有用的命令:
composer show myplugin/myplugin