Cómo requerir un tenedor con compositor


172

aquí está mi composer.json, quiero usar el tenedor del proyecto lessphp de Nodge en 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"
},

Pero tengo este error cuando hago la actualización:

nodge / lessphp dev-master -> no se encontró un paquete coincidente.

No sé cómo requerirlo correctamente este tenedor ...

Alguna sugerencia ?

Respuestas:


228

La forma más común (y más fácil) de hacerlo es usar un repositorio VCS.

Todo lo que tiene que hacer es agregar su bifurcación como repositorio y actualizar la restricción de versión para que apunte a su rama personalizada. Su nombre de rama personalizado debe tener el prefijo dev-.

Ejemplo suponiendo que parches el monólogo para corregir un error en la rama de corrección de errores:

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

Tenga en cuenta que no cambia la instrucción require excepto para especificar su rama de corrección de errores. Todavía hace referencia al paquete ascendente ( monolog/monolog), no a su bifurcación personal ( igorw/monolog). Puedes leer los detalles en los documentos


66
Esto no parece funcionar para github.com/Polycademy/purl, que es una bifurcación de github.com/jwage/purl que he estado tratando de: "repositorios": [{"type": "vcs", "url ":" git@github.com: Polycademy / purl.git "}], y" require ": {" jwade / purl ":" dev-master ",}, pero sigo obteniendo: Problema 1 - El paquete solicitado jwade / purl no se pudo encontrar en ninguna versión, puede haber un error tipográfico en el nombre del paquete.
CMCDragonkai

11
@CMCDragonkai intente ejecutarlo composer show jwade/purl -v, debería decirle por qué ignoró la versión dev-master si lo hace.
Seldaek

44
@seldaek me salvaste! ¡gracias! (Mi bifurcación se llamaba dev-dev- ..) no sabía que la denominación era automática.
Miguel Stevens

15
"Leer los documentos" es una mala respuesta, una mejor respuesta sería dar un ejemplo concreto
oskarth 05 de

77
Es bueno advertir sobre no hacer referencia al tenedor personal. Esto me salvó el día, +1
edrian

42

Usar VCS funciona:

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

Pero si necesito un módulo que tenga esto composer.json, no funciona. Instala el proyecto original, no el tenedor.

Ejemplo

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

Debo mencionar nuevamente el repositorio. ¿Eso es normal?


mismo aquí mismo problema
Aysennoussi

Elimine manualmente el módulo utilizando "rm -rf" y luego "actualización del compositor". Eso funcionó para mí.
Hubert Perron

3
He usado una docena de tenedores, y esto nunca funcionó . Aquí hay una solución de trabajo: stackoverflow.com/a/27970559/183904
Julien

44
@Julien, acabo de usar este método y funcionó de maravilla ... Los documentos son bastante claros, solo debe recordar poner el prefijo dev- en el nombre de su rama personalizada cuando requiera el paquete en cuestión.
mTorres

2
Funcionó para mí ... pero quiero mencionar que necesitaba usar https: // para la URL.
plong0

33

Si no puede obtener la respuesta @Neilime para que funcione para usted, asegúrese de que su bifurcación use una rama diferente.

Por ejemplo, empuje sus cambios a una rama en su bifurcación llamada my-bugfix, no agregue el dev-prefijo en el nombre de su rama, pero en su composer.json debe agregarlo. Su archivo de compositor se verá así:

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

1
¡Esta es una explicación ingeniosa y clara para mí! Gracias !
Dominik

1
pero ¿y si es el tenedor de otra persona ? Vea el ejemplo aquí
abbood el

Además, el namecampo en el composer.jsonarchivo de su repositorio bifurcado debe permanecer igual con el propietario original.
NecipAllef

11

He probado muchas opciones, pero después de recibir esta publicación vi la luz y funcionó perfectamente.

Esto es lo que tienes que hacer:

1- bifurcación de repositorio

2- Crea una rama y realiza las modificaciones necesarias.

3- Agrega la etiqueta del repositorio a tu composer.json

"repositories": [

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

4- En la línea de comando dentro de su proyecto requiera su bifurcación de esta manera:

composer require vendor/packagename:dev-branchname

¡¡Y voilá!!

Tienes tu versión de fork funcionando



5

Entonces, este es 2019, y la mayoría de las respuestas aquí ya son correctas.

Sin embargo, si se encuentra en una situación en la que necesita requerir una rama particular de su bifurcación (que creó), haga que el compositor enumere primero las versiones / etiquetas disponibles. Esto me ahorró mucho tiempo.

Un ejemplo completo con spatie/laravel-backuppaquete.

Primero, agregue la repositoriesclave a composer.json. Con la url de tu tenedor

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

Obtenga versiones / etiquetas disponibles

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

Elija la versión que desea versionsen la salida del terminal, luego requiera esa versión

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

2

Por lo general, agrego un nodo "dist" a la definición del paquete. Nunca tuve problemas para usarlo de esta manera.

Sin embargo, no puedo recordar de dónde obtuve este truco para obtener más explicaciones.

{
    "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": "*"
    }
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.