如何使用Composer的路径类型本地仓库

3

我对Composer相对陌生,一直在寻找使用路径类型的本地存储库的示例。我找到了几篇文章(例如这篇这篇),但当我尝试这些示例时,我遇到了以下错误:

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"
}

每个应用程序文件夹(例如app1)中的composer.json文件如下所示:

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

如果有人对我做错的事情有任何建议,我将非常感激!

2个回答

2

我发现了一个答案在这里

不要这样写:

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

您应该写成这样:
{
    "repositories": [
        {
            "type": "path",
            "url": "../../packages/my-package"
        }
    ],
    "require": {
        "my/package": "dev-master"
    }
}

请注意在require部分中从*改为dev-master

0

你的设置看起来正确。我也使用那个解决方案。我认为问题出在其他地方。尝试将*约束条件更改为类似dev-master的内容。如果这样做不能解决问题,请发布你的mylibrary中的composer.json


谢谢回复。我尝试在mylibrary的composer.json文件中将“dev-master”更改为“*”,但使用路径的那个仍然无法工作。 - Erich
能否提供一下你的composer.json文件设置的示例?也许我可以从中学习。 - Erich
我认为你不需要在composer.json中加上"version": "dev-master" - guessimtoolate
我已经移除了相关内容,但对使用路径的composer.json文件并没有影响到项目。如果有人有使用composer通过路径分享文件的工作示例,并且不使用psr-0,请告知我,我将不胜感激。 - Erich
嗯,我对这个问题已经没有更多的想法了。 - guessimtoolate

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接