无法让作曲家"路径"存储库工作

dev*_*oxr 26 php json repository package composer-php

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

composer.json < Main
  packages/
    balunker/
      testpackage/
        composer.json < Package
        src/
          TestPackage.php
Run Code Online (Sandbox Code Playgroud)

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

{
    "name": "vagrant/composer-test",
    "repositories": [
        {
             "type": "path",
            "url": "packages/*/*"
        }
    ],
    "require": {
        "balunker/testpackage": "*"
    }
}
Run Code Online (Sandbox Code Playgroud)

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

{
  "name": "balunker/testpackage",
  "autoload": {
    "psr-4": {
      "Balunker\\": "src/"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

composer update我简单的拿到包不能被解析的消息.没有创建符号链接,也没有安装任何包.我确实花了一半的时间来搞清楚这一点,没有任何成功.

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

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

非常感谢来自此的任何建议.我真的不知道还能做什么.

dev*_*oxr 52

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

{
    "repositories": [
        {
            "type": "path",
            "url": "../../packages/my-package"
        }
    ],
    "require": {
        "my/package": "*"
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果您只有一个没有发行版的本地仓库,则必须使用:

{
    "repositories": [
        {
            "type": "path",
            "url": "../../packages/my-package"
        }
    ],
    "require": {
        "my/package": "dev-master"
    }
}
Run Code Online (Sandbox Code Playgroud)

版本dev-master是这里的关键(假设您正在处理主分支).这有点令人愤怒,但多亏了一些有用的作曲家贡献者,我终于可以抓住这个了.

我希望这对未来的某些人有所帮助.

祝好运!

  • @BradKent我非常不鼓励使用"最小稳定性":"dev"`这意味着:你想要从所有依赖项中获得最新的不稳定版本.`dev -`前缀或`-dev`后缀只会对有问题的一个包进行更改. (3认同)
  • 作为将整个作曲家设置为"minimum-stability:dev"的替代方法,您可以通过`dev-master`或`*@ dev`为该版本标记单个包.对于在Windows上运行此操作的任何人,您可能还需要将"{"选项":{"symlink":false}}`添加到存储库定义中,以便从联结切换到镜像本地程序包. (3认同)
  • 只要你还有 `"prefer-stable": true`,你就没事。它只会在必要时使用 dev 包来满足依赖项。 (2认同)
  • 我已尝试在堆栈上发布的所有解决方案,但仍然没有 (2认同)

Mát*_*ger 10

对我来说,问题是我忘记使用 docker 挂载存储库文件夹,因此本地网络服务器无法访问它。对此也要注意


Jar*_*vis 8

帮助我解决的是composer clear-cache然后运行composer update

说明:我最初尝试composer install my/package在依赖版本上失败。所以我需要进行一些本地修改以使其适用于 Laravel 6.0。但是,它继续检查 Laravel 包的错误版本,这让我相信它没有看到我在repositories密钥中设置的本地存储库"type": "path"。我首先确保路径存在并且我在正确的分支上(master这就是我dev-master在我的composer.json. 一旦我清除了 Composer 缓存并运行更新,它就会使用我的本地路径进行更新,没有任何依赖问题。

"repositories": [
    {
        "type": "path",
        "url": "../libs/package-name"
    }
],
"require-dev": {
    "pkg-maintainer/package-name": "dev-master"
}
Run Code Online (Sandbox Code Playgroud)