web-dev-qa-db-fra.com

Comment exiger un fork avec composer

voici mon composer.json, je veux utiliser le fork de Nodge du projet lessphp sur Github

 "repositories": [{
    "type": "package",
    "package": {
        "version": "dev-master",
        "name": "nodge/lessphp",
        "source": {
            "url": "https://github.com/Nodge/lessphp.git",
            "type": "git",
            "reference": "master"
        },
        "autoload": {
            "classmap": ["lessc.inc.php"]
        }
    }
}],
"require": {
    "php": ">=5.3.3",
    "nodge/lessphp": "dev-master"
},

Mais j'ai cette erreur quand je fais la mise à jour:

nodge/lessphp dev-master -> aucun paquet correspondant trouvé.

Je ne sais pas comment l'exiger correctement cette fourche ...

Aucune suggestion ?

144
Neilime

Le moyen le plus courant (et le plus simple) consiste à utiliser un référentiel VCS.

Tout ce que vous avez à faire est d'ajouter votre fork en tant que référentiel et de mettre à jour la contrainte de version pour qu'elle pointe vers votre branche personnalisée. Votre nom de branche personnalisé doit être précédé du préfixe dev- _ .

Exemple en supposant que vous corrigiez un bogue dans monolog pour corriger un bogue dans monolog:

{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/igorw/monolog"
        }
    ],
    "require": {
        "monolog/monolog": "dev-bugfix"
    }
}

Notez que vous ne modifiez pas l'instruction require sauf pour spécifier votre branche de correction de bug. Vous faites toujours référence au paquet en amont (monolog/monolog), pas votre fourchette personnelle (igorw/monolog). Vous pouvez lire les détails dans la documentation

180
Seldaek

Utiliser VCS fonctionne:

"name": "test/test",
"repositories": [{
    "type": "vcs",
    "url": "http://github.com/Nodge/lessphp"
}],
"require": {
    "leafo/lessphp": "dev-master"
},

Mais si j'ai besoin d'un module qui a cette composer.json, ça ne marche pas. Il installe le projet original, pas la fourchette.

Exemple

"name": "example/example",
"require": {
    "test/test": "dev-master"
},

Je devrais mentionner à nouveau le référentiel. Est-ce normal?

41
Neilime

Si vous ne pouvez pas obtenir la réponse @Neilime pour vous, assurez-vous que votre fourchette utilise une branche différente.

Par exemple, transmettez vos modifications à une branche de votre branche appelée my-bugfix, n'a pas ajouté dev- préfixe dans le nom de votre branche mais dans votre composer.json, vous devez l’ajouter. Votre fichier composer ressemblera à ceci:

"repositories":
[
    {
        "type": "vcs",
        "url": "http://github.com/yourname/packageName"
    }
],
"require": {
    "owner/packageName": "dev-my-bugfix"
},
26
Boedy

Selon le Composer documentation http://getcomposer.org/doc/05-repositories.md#vcs , il suffit de spécifier le référentiel original (pas le fork) ) dans le require ("nodge/lessphp" dans votre cas). Composer installera ensuite VOTRE fork (regardez le code chez les vendeurs)

7
Elvis Ciotti

J'ai essayé de nombreuses options, mais après avoir reçu ce message, j'ai vu la lumière et cela a fonctionné parfaitement.

Voici ce que vous devez faire:

1- Fourche de dépôt

2- Créez une branche et apportez les modifications requises.

3- Ajoutez l'étiquette du référentiel à votre composer.json

"repositories": [

        {
            "type": "vcs",
            "url": "https://github.com/user/yourforkname"
        }
    ]

4- Dans la ligne de commande à l'intérieur de votre projet, utilisez votre fork comme ceci:

composer require vendor/packagename:dev-branchname

Et voila !!

Vous avez votre version de fourche de travail

4
Luis Mata B.

Nous sommes donc en 2019 et la plupart des réponses sont déjà correctes.

Si vous vous trouvez toutefois dans une situation où vous devez exiger une branche particulière de votre branche (que vous avez créée), avez composer) répertoriez les versions/balises disponibles. Cela m’a fait gagner beaucoup de temps.

Un exemple complet avec spatie/laravel-backup paquet.

Premièrement, ajoutez la clé repositories à composer.json. Avec l'url de votre fourche

"repositories": [{
   "type": "vcs",
   "url": "https://github.com/holymp2006/laravel-backup"
 }]

Obtenir les versions/tags disponibles

composer show "spatie/laravel-backup" --all

Choisissez la version que vous voulez parmi versions dans la sortie du terminal, puis utilisez cette version.

composer require spatie/laravel-backup:v5.x-dev
2
Sam

J'ajoute généralement un noeud "dist" à la définition du paquet. Je n'ai jamais eu de problème à l'utiliser de cette façon.

Je ne me souviens pas d'où j'ai tiré cette astuce pour d'autres explications.

{
    "repositories": [
        {
            "type": "package",
            "package": {
                "version": "dev-master",
                "name": "nodge/lessphp",
                "source": {
                    "url": "https://github.com/Nodge/lessphp.git",
                    "type": "git",
                    "reference": "master"
                },
                "autoload": {
                    "classmap": ["lessc.inc.php"]
                },
                "dist": {
                    "url": "https://github.com/Nodge/lessphp/archive/master.Zip",
                    "type": "Zip"
                }
            }
        }
    ],
    "require": {
        "nodge/lessphp": "*"
    }
}
2
user3497737