无法在我的 Laravel 项目中使用 fork 存储库 - “找不到匹配的包版本”

Posted

技术标签:

【中文标题】无法在我的 Laravel 项目中使用 fork 存储库 - “找不到匹配的包版本”【英文标题】:Unable to use fork repository in my Laravel project - "Could not find a matching version of package" 【发布时间】:2019-10-20 13:03:10 【问题描述】:

我用某人的叉子 (https://github.com/hardevine/LaravelShoppingcart) 制作了我的叉子 (https://github.com/digital-bird/LaravelShoppingcart)。

我想在我的 Laravel 项目中使用我的 fork + 我想在将来修改它

1) 我通过composer remove hardevine/shoppingcart从这个项目中删除了hardevine的叉子

2) 然后我在我的 fork 中修改了composer.json

新名称:"name": "digital-bird/shoppingcart", 新作者 在要求下我添加了:"hardevine/shoppingcart": "dev-master", 最后我添加了存储库部分:

⬇️

"repositories": [
    
        "type": "vcs",
        "url": "https://github.com/digital-bird/LaravelShoppingcart"
    
],

我的 fork 的新 package.json 看起来像:https://github.com/digital-bird/LaravelShoppingcart/blob/master/composer.json

3) 我把它推送到我的 fork 的 master 分支

4) 我去了我的 Laravel 项目并输入:

composer require digital-bird/shoppingcart

我收到大红色错误:

[InvalidArgumentException] 找不到匹配的版本 包装数字鸟/购物车。检查包裹拼写,您的 版本约束,并且包在稳定性中可用 这符合您的最低稳定性(稳定)。

我做错了什么?

【问题讨论】:

【参考方案1】:

你应该添加这个:

"repositories": [
    
        "type": "vcs",
        "url": "https://github.com/digital-bird/LaravelShoppingcart"
    
],

到您的 Laravel 主项目的 composer.json,而不是您的库。还添加"hardevine/shoppingcart": "dev-master", 似乎没有意义,它可能会产生一些冲突。

【讨论】:

感谢您的反馈,我会尽力让您知道,敬请期待。 嘿,Rob,非常感谢您的提示,一切进展顺利,我学到了一些东西。谢谢!【参考方案2】:

你需要将你的 Github 仓库提交到Packagist

【讨论】:

如果你将它添加到正在使用这个fork的项目的repositories部分,则不需要在packagist中注册fork。 Composer 调用 packagist.org 所以如果你输入 composer require / 它会搜索 packagist.org。 Composer 将优先选择来自存储库的包,并且仅当指定存储库之一中没有定义此类包时才使用来自 Packagist 的版本。没有必要因为只在一个项目中使用的分叉而使 Packagist 混乱。 只是插话,Rob 是对的。您可以查看存储库上的作曲家文档部分。这将直接检查 git-repo 中的 composer.json 以检查包是否可用。无需使用 packagegist。见:getcomposer.org/doc/…

以上是关于无法在我的 Laravel 项目中使用 fork 存储库 - “找不到匹配的包版本”的主要内容,如果未能解决你的问题,请参考以下文章

无法创建 Laravel 项目 [重复]

无法在 laravel 项目中使用 composer 安装 blocktrail/blocktrail-sdk

Laravel Valet托管网站返回Chrome中的“无法访问网站”

Laravel Mix 我无法访问我的 javascript 类

使用 Laravel 5.8 无法在我的浏览器中获得基本的 select2 多选功能

当我使用 ajax 发布请求时,为啥在我的 live laravel 项目中显示 404 和 405