web-dev-qa-db-fra.com

Impossible de faire fonctionner le référentiel "path" du compositeur

J'ai une structure de répertoire comme celle-ci:

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

Le composer.json principal ressemble à ceci:

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

Alors que le paquetage composer.json ressemble à ceci:

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

Sur composer update, je reçois simplement un message indiquant que le package n'a pas pu être résolu. Aucun lien symbolique n'est créé et aucun paquet n'est installé. J'ai littéralement passé la moitié de ma journée à résoudre ce problème, sans succès.

J'ai également téléchargé une sortie composer update -vvv verbeuse de this: http://Pastebin.com/mMRHsACk .

Ma version de compositeur est la dernière (à compter du 20 avril 2016 à 14h39 UTC) et tout cela tourne dans Vagrant (Debian).

N'IMPORTE QUELLE recommandation de la part de ce dernier est grandement appréciée. Je ne sais vraiment plus quoi faire d'autre.

17
devboxr

J'ai également posté le problème sur Github et il s'avère que la documentation est un peu trompeuse. Ça dit:

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

Cependant, si vous avez juste un dépôt local sans version, vous devez utiliser:

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

La version dev-master est la clé ici (étant donné que vous travaillez sur la branche principale). C’était un peu exaspérant, mais grâce à quelques compositeurs utiles, je pouvais enfin comprendre.

J'espère que cela pourra aider quelqu'un à l'avenir.

Bonne chance!

35
devboxr

Ce qui a fonctionné pour moi était très similaire à ce qui précède, mais je devais cibler spécifiquement la branche sur laquelle je développais. 

En supposant que le code dans le répertoire/newapp se trouve au même niveau que/app et une branche nommée feature/the-new-package

"repositories": [
  {
    "type": "path",
    "url": "newapp"
  }
],
"require": {
  "package/newapp": "dev-feature/the-new-package"
},

\ * n'a pas fonctionné, ni dev-master. Ce devait être dev-feature/the-new-package.

0
Eric Vautier

Pour les futurs utilisateurs de Google, ajoutez votre version au composer.json, puis demandez le package avec l'option --prefer-source

Par exemple: composer require your-vendor/package:1.0.* --prefer-source

0
TylersSN