Composer, Frameworks, Herramientas, Mis herramientas, Symfony, Symfony, WebDevCuba, ¿Cómo se hace?

¿Cómo se hace? Repositorio local de Composer (Actualizada la descarga)

Hace algún tiempo ya en esta misma plataforma de Blog existía un blog llamado ManyTostao donde se abordaban temas sobre el Framework de desarrollo Symfony y uno de los post más interesantes que descubrí fue uno donde explicaba cómo crear un repositorio local del gestor de dependencias PHP Composer. Pero con el paso del tiempo este blog desapareció y con el este importante artículo.

En Cuba los desarrolladores nos enfrentamos cada día a un sin número de limitaciones y una de ellas es a la hora de utilizar composer, pues la velocidad de conexión, los proxy y el costo del nauta, conlleva a que la mejor solución es crear un repositorio local donde podamos poner los Bundles o dependencias que utilizamos durante el proceso de desarrollo ya sean descargado desde el Github o los que nos pasan nuestros colegas. En este post explicaré paso a paso como crear dicho repositorio.

Pero antes responderé a dos preguntas que se deben hacer los que no conocen en acerca de esta herramienta ¿qué es y por qué usar composer en nuestros proyectos?

Composer es la solución a todos los problemas de dependencias de los proyectos PHP. Gracias a Composer, tú sólo tienes que indicar qué librerías necesita el proyecto y Composer se encarga de descargarlas e instalarlas, teniendo en cuenta qué versiones son compatibles con tu proyecto. Además, no debes preocuparte de si una librería requiere de otras para funcionar, ya que Composer realiza esta comprobación e instala recursivamente cualquier otra librería necesaria.

 Creando mi repositorio

Lo primero a hacer es descargar este comprimido que no es más que un proyecto de PHP Satis. Esta aplicación facilitará e proceso de creación del repositorio (tan simple como ejecutar desde ella un comando), leyendo todos los archivos .json de los paquetes (compactados .zip descargados de GitHub y encontrados a traves de Packagist) de una carpeta y haciendo un “volcado” de ellos en otra carpeta que servirá como acceso público al repositorio en sí (una sencilla página web). Una vez descargado el proyecto, editamos su archivo satis.json con nuestro editor preferido y ponemos algo como lo que sigue:

satis.part01

satis.part02

satis.part03

satis.part04

{
    "name":"Repositorio Local",
    "homepage":"http://localhost:5800/",
    "require-all":true,
     "archive":{
         "directory": "dists",
         "format": "zip",
         "skip-dev": true
     },
     "repositories": [
         {
             "type": "artifact",
             "url": "D:/Composer/repositories/"
         }
     ]
 }

De esta manera, le decimos a Satis que una vez levantado, nuestro repositorio se llamará “Repositorio Local” (cualquier nombre es aceptable), que se podrá acceder a él a través la dirección es “localhost” por el puerto “5800”, que almacene los paquetes “volcados” en un directorio “dists” dentro de la carpeta donde ejecutemos dicho “volcado”, que esos paquetes se almacenarán en formato “zip” y que la carpeta desde donde ejecutaremos el “volcado” (desde donde, no hacia donde), se encuentra ubicada en “D:/Composer/repositories/”.

En el caso de este ejemplo, en “D:/Composer/” será el directorio en donde se ubicarán los archivos del proyecto satis, los paquetes a “volcar” y la carpeta pública de acceso al repositorio:

 

Con esto en posición, fijaremos la vista ahora en los paquetes en sí. La estrategia para obtenerlos puede ser cualquiera; una podría ser:

  • Localizar en Packagist el paquete que estamos buscando. En la sección dedicada al paquete en sí, hay una referencia a la rama en GitHub donde se se le da soporte. En esa misma sección se listan todos y cada uno de los paquetes de los que depende el que buscamos, con las versiones de estos y distribuidos por los que se requieren para su uso, y los que se requieren para su desarrollo.

  • Acceder a GitHub y descargar el paquete en cuestión. Desde allí tendremos la posibilidad de descargar la versión escogida o simplemente, la que se encuentra en desarrollo, como se puede ver en la imagen:

  • Guardamos el paquete directamente en la carpeta “D:/Composer/repositories” y editamos el archivo composer.json dentro del compactado para editarlo y asociarle la clave “version”. Este paso es importante pues sin esa clave, Satis no podrá ejecutar un “volcado” sobre ese paquete:

Los pasos anteriores deben ejecutarse sobre todos los paquetes de los que depende el que queremos. Con ellos en posición, volvemos la mirada a Satis.

Abrimos una consola con privilegios de administración, nos ubicamos en “D:/Composer/satis” y ejecutamos el siguiente comando:

php D:\Composer\satis\bin\satis build satis.json D:\Composer\published\

Nota: Se asume que al instalar PHP, se creó una variable global del mismo nombre en el sistema; si esto no fue así, en el comando solo se debe sustituir la palabra “php” con la dirección completa hasta el ejecutable “php.exe”.

Si el comando anterior se ejecutó exitosamente y los paquetes no dieron problemas en el “volcado”, en la carpeta “D:/Composer/published” tendremos el repositorio listo para ser accedido. Desde la consola anterior, nos ubicamos en esta carpeta y ejecutamos el comando:

php -S localhost:5800

Este comando levantará un servidor web desde la mencionada carpeta, lo que provocará que si accedemos a la dirección “localhost:5800”, veremos algo parecido a esto:

Trabajando con nuestro repositorio local

Con nuestro repositorio en marcha, para poder emplearlo en nuestras aplicaciones, solamente debemos configurar el archivo composer.json de esta para que la llave “repositories” luzca así:

 

"repositories": [
         {
             "type": "composer",
             "url": "http://localhost:5800/"
         },
         { "packagist": false }
     ],

 

El resto de las operaciones, son las estándar cuando se trabaja con composer; si queremos incluir un paquete en nuestro proyecto ejecutamos

composer require barryvdh/laravel-debugbar

Finalmente…

Satis se encargará de construir y publicar un repositorio de composer con todas las de la ley. Este repositorio permitirá instalar paquetes (y sus dependencias) que satisfagan las necesidades del proyecto. Para que esto sea siempre cierto, el repositorio deberá contener todos los paquetes que se desee utilizar, actualizándolo a través de los pasos descritos en este post.

Aclarando

En las últimas versiones de composer fue incluida una opción de seguridad que impide a composer conectarse a sitios no seguros (que no estén corriendo bajo el protocolo HTTPS). Para lograr que nuestro proyecto pueda actualizar sus paquetes contra nuestro repositorio local, lo más sencillo es deshabilitar esta opción en la clave “config” del composer.json:

 

"config": {
     "platform": {
         "php": "5.5.9"
     },
     "secure-http": false
 },

Acerca de Bárbaro Javier Valmaseda Vázquez

Ingeniero con alma de deportista. Perfeccionista para sus proyectos. Amante de las series y de un buen libro. Aunque su trabajo normal no tiene nada que ver con la tecnología (Comercial de una agencia de excursiones).

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *