php – 私人作曲家包 – 没有找到有效的composer.json
我试图加载一个我在BitBucket上托管的图书馆,如
official documentation和
here所述,使用作曲家,但是不断收到以下错误:
[ComposerRepositoryInvalidRepositoryException] 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:workspaceDFv3vendorvendor/my-package" && cd /D "C:workspaceDFv3vendorvendor/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创建这样的找到的包的列表,而不是手动创建它们. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |