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

时间:2016-05-23 20:20:57

标签: dependencies composer-php

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

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

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

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

2 个答案:

答案 0 :(得分:1)

我找到了答案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的更改。

答案 1 :(得分:0)

您的设置看起来正确无误。我也使用那个解决方案。我认为问题出在其他地方。尝试将*约束更改为dev-master之类的内容。如果仍然无法解决问题,请从composer.json发布mylibrary