php - example - No se puede hacer funcionar el repositorio de "ruta" del compositor
librerias php composer (3)
Tengo una estructura de directorios así:
composer.json < Main
packages/
balunker/
testpackage/
composer.json < Package
src/
TestPackage.php
El principal composer.json
ve así:
{
"name": "vagrant/composer-test",
"repositories": [
{
"type": "path",
"url": "packages/*/*"
}
],
"require": {
"balunker/testpackage": "*"
}
}
Mientras que el paquete composer.json
ve así:
{
"name": "balunker/testpackage",
"autoload": {
"psr-4": {
"Balunker//": "src/"
}
}
}
En la composer update
editor, simplemente recibo un mensaje que indica que el paquete no se pudo resolver. No se crean enlaces simbólicos y no se instala ningún paquete. Literalmente, he pasado la mitad de mi día resolviendo esto, sin ningún éxito.
También subí una salida detallada de composer update -vvv
detallada de esto: http://pastebin.com/mMRHsACk .
Mi versión de compositor es la última (desde el 20 de abril de 2016 a las 2:39 pm UTC) y todo esto se está ejecutando dentro de Vagrant (Debian).
CUALQUIER recomendación de aquí es muy apreciada. Realmente no sé qué más hacer.
Lo que funcionó para mí fue muy similar al anterior, pero tuve que apuntar específicamente a la rama en la que estaba desarrollando.
Asumiendo código en el directorio / newapp en el mismo nivel que / app, y una rama llamada feature / the-new-package:
"repositories": [
{
"type": "path",
"url": "newapp"
}
],
"require": {
"package/newapp": "dev-feature/the-new-package"
},
/ * No funcionó, ni tampoco dev-master. Tenía que ser dev-feature / the-new-package.
Para futuros Googlers, agregue su versión a composer.json
y luego requiera el paquete con la opción --prefer-source
.
Por ejemplo: el composer require your-vendor/package:1.0.* --prefer-source
También publiqué el tema en Github y resulta que la documentación es un poco engañosa. Dice:
{
"repositories": [
{
"type": "path",
"url": "../../packages/my-package"
}
],
"require": {
"my/package": "*"
}
}
Sin embargo, si solo tienes un repositorio local sin lanzamientos, debes usar:
{
"repositories": [
{
"type": "path",
"url": "../../packages/my-package"
}
],
"require": {
"my/package": "dev-master"
}
}
La versión dev-master
es la clave aquí (dado que estás trabajando en la rama maestra). Esto fue un poco exasperante, pero gracias a algunos colaboradores de compositores que me ayudaron, finalmente pude controlarlo.
Espero que esto pueda ayudar a alguien en el futuro.
¡Buena suerte!