Come richiedere una forcella con il compositore


172

ecco il mio compositore json, voglio usare il fork di Nodge del progetto lessphp su 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"
},

Ma ho questo errore quando faccio l'aggiornamento:

nodge / lessphp dev-master -> nessun pacchetto corrispondente trovato.

Non so come richiederlo correttamente questa forcella ...

Eventuali suggerimenti ?

Risposte:


228

Il modo più comune (e più semplice) per farlo è utilizzare un repository VCS.

Tutto quello che devi fare è aggiungere il tuo fork come repository e aggiornare il vincolo di versione per puntare al tuo ramo personalizzato. Il tuo nome di filiale personalizzato deve essere preceduto da dev-.

Esempio supponendo che tu abbia corretto il monologo per correggere un bug nel ramo bugfix:

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

Si noti che non si modifica l'istruzione request se non per specificare il ramo bugfix. Fai ancora riferimento al pacchetto upstream ( monolog/monolog), non al tuo fork personale ( igorw/monolog). Puoi leggere i dettagli nei documenti


6
Questo non sembra funzionare per github.com/Polycademy/purl che è un fork di github.com/jwage/purl che ho cercato di: "repository": [{"type": "vcs", "url ":" git@github.com: Polycademy / purl.git "}] e" richiedono ": {" jwade / purl ":" dev-master ",}, ma continuo a ricevere: Problema 1 - Il pacchetto richiesto jwade / purl non è stato trovato in nessuna versione, potrebbe esserci un errore di battitura nel nome del pacchetto.
CMCDragonkai,

11
@CMCDragonkai provare a eseguirlo composer show jwade/purl -vdovrebbe dirti perché ha ignorato la versione dev-master se lo fa.
Seldaek,

4
@seldaek mi hai salvato! grazie! (Il mio fork si chiamava dev-dev- ..) non sapeva che la denominazione fosse automaticamente.
Miguel Stevens,

15
"Leggi i documenti" è una cattiva risposta, una risposta migliore sarebbe quella di fare un esempio concreto
oskarth

7
Bello avvertire di non fare riferimento al fork personale. Questo mi ha salvato la giornata, +1
edrian,

42

Utilizzando VCS funziona:

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

Ma se ho bisogno di un modulo che ha questo composer.json, non funziona. Installa il progetto originale, non la forcella.

Esempio

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

Dovrei menzionare di nuovo il repository. È normale?


stesso qui stesso problema
Aysennoussi,

Elimina manualmente il modulo usando "rm -rf" e poi "aggiornamento del compositore". Questo ha funzionato per me.
Hubert Perron,

3
Ho usato una dozzina di forchette e questo non ha mai funzionato . Ecco una soluzione funzionante: stackoverflow.com/a/27970559/183904
Julien

4
@Julien, ho appena usato questo metodo e ha funzionato come un fascino ... I documenti sono abbastanza chiare, si deve solo ricordare di mettere il dev- prefisso nel tuo nome ramo personalizzato quando richiede il pacchetto in questione.
mTorres,

2
Ha funzionato per me ... ma voglio menzionare che dovevo usare https: // per l'URL.
pl00

33

Se non riesci a ottenere la risposta di @Neilime per te, assicurati che il tuo fork utilizzi un ramo diverso.

Ad esempio, invia le modifiche a un ramo sul fork chiamato my-bugfix, non aggiungere il dev-prefisso nel nome del ramo ma nel tuo composer.json devi aggiungerlo. Il tuo file compositore sarà simile a:

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

1
Questa è una spiegazione geniale e chiara per me! Grazie !
Dominik,

1
ma se fosse la forchetta di qualcun altro ? Vedi l'esempio qui
circa il

Inoltre, il namecampo nel composer.jsonfile del repository biforcato dovrebbe rimanere lo stesso con il proprietario originale.
NecipAllef,

11

Ho provato molte opzioni ma dopo aver ricevuto questo post ho visto la luce e ha funzionato perfettamente.

Questo è ciò che devi fare:

1- Fork de repository

2- Creare un ramo e apportare le modifiche richieste.

3- Aggiungi l'etichetta del repository al tuo composer.json

"repositories": [

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

4- Nella riga di comando all'interno del progetto è necessario il fork in questo modo:

composer require vendor/packagename:dev-branchname

E Voilá !!

La tua versione della forcella funziona



5

Quindi, questo è il 2019 e la maggior parte delle risposte qui sono già corrette.

Se ti trovi comunque, in una situazione in cui devi richiedere un particolare ramo del tuo fork (che hai creato), chiedi al compositore di elencare prima le versioni / i tag disponibili. Questo mi ha fatto risparmiare un sacco di tempo.

Un esempio completo con il spatie/laravel-backuppacchetto.

Innanzitutto, aggiungi la repositorieschiave a composer.json. Con l'url della tua forchetta

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

Ottieni versioni / tag disponibili

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

Scegliere la versione desiderata versionsnell'output del terminale, quindi richiedere quella versione

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

2

Di solito aggiungo un nodo "dist" alla definizione del pacchetto. Non ho mai avuto problemi ad usarlo in questo modo.

Non riesco a ricordare da dove ho preso questo trucco, tuttavia, per ulteriori spiegazioni.

{
    "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": "*"
    }
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.