我创建了一个包含一些用于版本控制的注释标记的包(1.0.0,1.0.1,1.1.0和2.0.0)。这个包住在自己的托管上(所以不是通过Packagist) 当尝试要求包时,composer只能找到2.0.0版本,并且在任何其他版本要求上失败。
使用包
的项目的Composer.php文件{
"name": "projectname",
"description": "Description.",
"keywords": ["keys"],
"license": "Licence",
"type": "project",
"require": {
...
"space/package-name": "~1.0" // Also tried 1.0.0, 1.0.*, ~1.0@dev - only 2.0.0 works
}
"repositories": [
...
{
"type": "git",
"url": "git@gitlab.com:space/package-name.git" // Make sure package is found on specific hosting
}
],
"config": {
"preferred-install": "dist",
"sort-packages": true,
"optimize-autoloader": true
}
在运行composer show "space/package-name"
时,我得到versions: * 2.0.0
。因此,在更新时,composer会产生以下错误:
The requested package space/package-name ~1.0 exists as name/package-
name[2.0.0, dev-master] but these are rejected by your constraint.
看起来作曲家无法找到除最新版本以外的任何其他版本,无论如何解决这个问题?
事情已经检查过:
更新 可能是Gitlab - Composer问题,see this comment。
答案 0 :(得分:0)
当Composer尝试阅读回购时,Gitlab并不总是提供标记信息。
解决方案:还在composer.json中添加版本信息:
{
"name": "package/name",
"version": "1.0.0",
...
}
这将是作曲家可读的。小心:Git标签必须与composer.json中的版本信息相匹配! (否则可能会导致错误)