php – 私人作曲家包 – 没有找到有效的composer.json

前端之家收集整理的这篇文章主要介绍了php – 私人作曲家包 – 没有找到有效的composer.json前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图加载一个我在BitBucket上托管的图书馆,如 official documentationhere所述,使用作曲家,但是不断收到以下错误
[Composer\Repository\InvalidRepositoryException]
No valid composer.json was found in any branch or tag of [repository URL],could not load a package from it.

这是我的项目composer.json:

{
    "name": "Project name","require": {
        "my-vendor/my-package": "dev-master"
    },"repositories": [
        {
            "type": "vcs","url": [repository URL]
        }
    ]
}

这里是我的远程存储库中的composer.json(显然无法找到):

{
    "name": "my-vendor/my-package","version": "0.3","autoload": {
        "psr-0": {
            "NS_": "src"
        }
    }
}

我应该提到composer.json文件都是根目录,因为它们应该是.

还有一些需要注意的事项:

我也尝试过“非作曲者包”方法,我在项目composer.json中指定了包信息,并从documentation中概述了远程仓库中的composer.json.这成功克隆了主分支但是会导致以下错误

[RuntimeException]
Failed to execute git checkout "master" && git reset --hard "master"

fatal: Not a git repository (or any of the parent directories): .git

但是,该软件包按预期的方式下载到/ vendor,所以我不知道为什么它试图重新检出主机.

这不是我希望解决这个问题的方式(因为我宁愿在远程存储库中使用composer.json),但它可能有助于在其他地方找到问题.

感谢任何帮助.

编辑

通过HTTP引用一个package.json,我设法使它工作:

"repositories": [
    {
        "type": "composer","url": "http://localhost/packages.json"
    }
]

packages.json看起来像:

{
    "packages": {
        "vendor/my-package": {
            "dev-master": {
                "name": "vendor/my-package","version": "dev-master","source": {
                    "url": [repository URL],"type": "git","reference": "master"
                }
            }
        }
    }
}

这是获得这项工作的唯一途径吗?如果我只是要使用一个或两个内部的包,似乎有点过分的托管自己的package.json文件.

无论如何,这给我的Git错误与前面提到的相同.

编辑2

强制一个错误(无效的SSH密码)给出了这一点:

[RuntimeException]
Failed to execute git clone "[repository URL]" "C:\workspace\DFv3\vendor\vendor/my-package" && cd /D "C:\workspace\DFv3\vendor\vendor/my-package" && git remote add composer "[repository URL]" && git fetch composer

所以我可以清楚地看到它在做什么.但是,这个命令似乎运行它后,cds进入.git目录并尝试运行:

git checkout "master" && git reset --hard "master"

大概是为了摆脱它拉出的作曲家实例.但是,它正在错误的目录中运行,我不知道为什么..

如果实际由受支持的源代码管理系统管理,则不得在库的composer.json中包含版本规范.目前你说你的主分支是版本0.3(这是一个稳定的版本),但是你正在尝试添加“dev-master”(这是一个不稳定的版本).如果该软件真的是“dev-master”或“0.3”版本,Composer可能会感到困惑.

如果您真正在主分支中为0.3.x系列开发新版本,则应该定义一个分支别名.将它添加到您当前的开发分支版本0.3.x:

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

如果要移动到0.4或1.0版本,您将在0.3系列的“最后”状态下分支,名为“0.3.x”,然后将主分支中的composer.json更新为指向dev-掌握新的别名(如“dev-master”:“0.4.x-dev”).你也可以命名你的旧0.3分支,反正你喜欢,然后添加一个别名为THAT分支.

这样做将使您能够要求最新的0.3.x开发版本,如下所示:

"require": {
    "my-vendor/my-package": "0.3.*@dev"
}

这将拉出最新的0.3版本 – 由于定义的别名,它目前是主分支中的最新提交.

您当前设置的方式迫使您明确地包含版本0.3,这是一个移动目标,而不会使该事实明确知道.

只有当没有可用的版本控制系统才能给出Composer的版本号,即没有可用的标签,或者标签不符合Composer对版本号的要求时,才能给出明确的版本标签.由于您似乎控制着该vcs,所以使标签符合Composers标准可能是一个好主意,而不是让它发布新版本变得麻烦.

修复这个之后,我确实期望您的安装不再需要该package.json文件,因为该文件现在修复您使用该版本声明创建的麻烦.那么你也不需要那个作曲家的参考,但是可以像你一样恢复提到原始的存储库.

如果您觉得您使用太多私有存储库,这些存储库都需要更多的私有存储库,并且在长列表中提及它们,您可以考虑使用Satis创建这样的找到的包的列表,而不是手动创建它们.

原文链接:https://www.f2er.com/php/131763.html

猜你在找的PHP相关文章