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 ?
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
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.
"name": "example/example",
"require": {
"test/test": "dev-master"
},
Je devrais mentionner à nouveau le référentiel. Est-ce normal?
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"
},
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)
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
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
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": "*"
}
}