无法让作曲家“路径”存储库正常工作

2022-08-30 11:09:55

我有一个这样的目录结构:

composer.json < Main
  packages/
    balunker/
      testpackage/
        composer.json < Package
        src/
          TestPackage.php

主要看起来像这样:composer.json

{
    "name": "vagrant/composer-test",
    "repositories": [
        {
             "type": "path",
            "url": "packages/*/*"
        }
    ],
    "require": {
        "balunker/testpackage": "*"
    }
}

虽然包看起来像这样:composer.json

{
  "name": "balunker/testpackage",
  "autoload": {
    "psr-4": {
      "Balunker\\": "src/"
    }
  }
}

在我简单地得到一条消息,包裹无法解析。不会创建符号链接,也不会安装任何软件包。我花了一半的时间弄清楚这一点,没有任何成功。composer update

我还上传了一个详细的输出:http://pastebin.com/mMRHsACkcomposer update -vvv

我的作曲家版本是最新的(截至2016年4月20日下午2:39 UTC),所有这些都在Vagrant(Debian)内部运行。

非常感谢您从此提出的任何建议。我真的不知道还能做什么了。


答案 1

我也在Github上发布了这个问题,事实证明,文档有点误导。它说:

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

但是,如果您只有一个没有发布的本地存储库,则必须使用:

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

版本是这里的关键(假设您正在处理主分支)。这有点令人生气,但多亏了一些乐于助人的作曲家贡献者,我终于可以掌握这一点。dev-master

我希望这能在未来帮助某人。

祝你好运!


答案 2

帮助我解决的是,然后运行.composer clear-cachecomposer update

解释:我最初尝试过在依赖版本上失败。所以我需要做一些本地修改,使它与Laravel 6.0一起工作。但是,它继续检查Laravel软件包的错误版本,这使我认为它没有看到我在密钥中设置的本地存储库。我首先确保路径存在,并且我在正确的分支上(这就是为什么我在我的中使用)。一旦我清除了作曲家缓存并运行更新,它就使用我的本地路径进行了更新,没有依赖关系问题。composer install my/packagerepositories"type": "path"masterdev-mastercomposer.json

"repositories": [
    {
        "type": "path",
        "url": "../libs/package-name"
    }
],
"require-dev": {
    "pkg-maintainer/package-name": "dev-master"
}

推荐