如何在Composer中使用路径类型本地存储库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Composer中使用路径类型本地存储库相关的知识,希望对你有一定的参考价值。

我是Composer的新手,并且一直在寻找使用路径repo类型使用本地存储库的示例。我发现了几篇文章(例如关于这个主题的this onethis one,但是当我尝试这些例子时,我最终得到的错误如下:

The requested package myvendor/mylibrary could not be found in any version, there may be a typo in the package name.

所以我想我会创造一个超级简单的例子,说明我正在努力希望有人能指出我正确的方向。

我的示例应用程序是这样组织的:

├── app1
│   └── composer.json
├── app2
│   └── composer.json
└── libraries
    └── testlibrary
        ├── composer.json
        ├── TestService.php

libraries/testlibrary/composer.json内有以下内容:

{
  "name": "myvendor/mylibrary",
  "version": "dev-master"
}

在每个app文件夹(例如app1)中,composer.json文件如下所示:

{
    "repositories": [
        {
            "type": "path",
            "url": "../libraries/testlibrary"
        }
    ],
    "require": {
        "myvendor/mylibrary": "*"
    }
}

如果有人对我做错了什么有任何建议,我会非常感激!

答案

我找到了答案here

而不是这个:

{
    "repositories": [
        {
            "type": "path",
            "url": "../../packages/my-package"
        }
    ],
    "require": {
        "my/package": "*"
    }
}

你应该这样写:

{
    "repositories": [
        {
            "type": "path",
            "url": "../../packages/my-package"
        }
    ],
    "require": {
        "my/package": "dev-master"
    }
}

请注意*部分从dev-masterrequire的变化。

另一答案

您的设置看起来正确。我也使用那个解决方案。我认为问题出在其他地方。尝试将*约束改为像dev-master。如果这还没有解决,请从composer.json发布你的mylibrary

以上是关于如何在Composer中使用路径类型本地存储库的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu:如何使用 sudo 使用 composer 安装私有存储库

如何在 GitHub 存储库中包含 Composer

如何使用 composer 安装部分 git 存储库?

编辑在 composer 中管理的多个 PHP 包

vs2019更改git存储库默认本地路径

composer引用本地git做为源库