Desarrollo

Cómo crear un paquete personalizado desde cero con Composer

¿Qué es Composer?

Composer es un manejador de dependencias de PHP. Se encarga de administrar las dependencias necesarias en cada proyecto, esto quiere decir que Composer actualizará las librerías y dependencias necesarias para administrarlas en un solo lugar.

Seguramente te estarás preguntando cómo esto puede traerte beneficios, bueno, imagina que estás trabajando en un proyecto, escribiendo un par de clases para manejar ciertas acciones. Tiempo después, empiezas un nuevo proyecto en el que necesitas esas antiguas características así que utilizas el tradicional copy-paste, para optimizar los tiempos. En este punto tendrás dos versiones con las mismas funcionalidades, así que copias la nueva versión y la reemplazas en el primer proyecto.

Supongamos que en vez de 2 proyectos tienes 20, es una locura pensar que un trabajo tan rudimentario como éste deba realizarse cada vez que el código sea modificado. Aquí es donde la idea de crear un paquete que abarque estas funcionalidades es la mejor opción, ya que puede ser manejado por versiones y utilizado de acuerdo a las características del proyecto, otorgando una mayor facilidad de soporte.

Crear un paquete composer significa que el código del repositorio y proyecto puede ser actualizado en simples pasos, y mucho más, la comunidad entera tiene acceso a ese código y puede ser usado en cientos de proyectos.

En este blog, veremos cómo crear un paquete personalizado usando composer para consumir el API de GitHub. Para crear el paquete personalizado de Composer, necesitarás crear un folder con la siguiente estructura:

|- vendor/name
  |- src
    |- Contracts
    |- Models
    |- Providers
  |- tests
  |- vendor

Después de crear la estructura base, en el tipo de terminal debe ir:

git init #initialize git tracking
composer init #this command will guide you through creating your composer.json file

Configuración del archivo composer.json

1. Establecer el nombre del paquete vendor/name, en este caso: agusrdz/github-api.
2. Añadir una descripción al paquete: This is a demo package to use the API of Github.
3. Añadir un autor: Your name your@email.com.
4. Añadir estabilidad mínima para el paquete: dev.
5. Definir las dependencias (require) para la producción manual, en vez de interactiva.
6. Definir las dependencias (require-dev) para el desarrollo manual en vez de interactivo.
7. Confirmar la generación del archivo composer.json.
8. Confirmar si quieres que el directorio vendor se añada al archivo .gitignore.
9. Añadir cada dependencia necesaria para usar el paquete.
10. Después de escribir el archivo composer.json, iniciar composer install en la terminal.

{
  "name": "agusrdz/github-api",
    "description": "This is a demo package to use the API of Github.",
    "type": "package",
    "license": "MIT",
    "authors": [
      {
          "name": "Agustin Espinoza",
          "email": "agustinurdz_@hotmail.com"
        }
    ],
    "minimum-stability": "dev",
    "require": {
      "php": ">=5.6",
        "guzzlehttp/guzzle": "^6.1",
        "jenssegers/model": "^1.1"
    },
    "require-dev": {
      "phpunit/phpunit": "~5.0",
        "phpunit/phpunit-mock-objects": "~3.0",
        "illuminate/support": "^5.3"
   }
}

¡Eso es todo!

Bueno, esto es casi todo lo que se ocupa… básicamente este es el composer.json que se requiere para crear un paquete composer. Es necesario añadir más líneas para definir los parámetros como cargas automáticas, pruebas unitarias y estabilidad preferente; así que ve a composer.json y añade esto después de required-dev.

"require-dev": {
  "phpunit/phpunit": "~5.0",
    "phpunit/phpunit-mock-objects": "~3.0",
    "illuminate/support": "^5.3"
},
"autoload": {
  "psr-4": {
      "AgusRdzGitHub": "src/"
    }
},
"autoload-dev": {
  "classmap": [
      "tests/TestCase.php"
    ]
}

Después de esto, añade el archivo phpunit.xml en la carpeta raíz para correr pruebas unitarias, las cuales son altamente recomendadas de hacer durante el desarrollo de estos paquetes.

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
         backupStaticAttributes="false"
         bootstrap="vendor/autoload.php"
         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="false"
         stopOnFailure="false"
         syntaxCheck="false">
    <testsuites>
        <testsuite name="Your package's test suit">
            <directory>./tests/</directory>
        </testsuite>
    </testsuites>
</phpunit>

Este paquete no está en la lista de Packagist.org porque fue creado con el único propósito de ser demostrativo. Para probarlo en tu proyecto, necesitas añadir eso en tu composer.json.

"require": {
        ...,
        ...,
        "agusrdz/github-api": "dev-master"
    },
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/AgusRdz/agusrdz-github-api.git"
        }
    ],

Conclusión

Como puedes ver, crear paquetes con Composer es muy sencillo. En este ejemplo algunas de las funcionalidades proveídas por GitHub API son consumidas. Lo mejor de todo es que pueden ser usadas por cualquier proyecto que administre sus dependencias con Composer.

Si deseas ver resultados, puedes visitar este repositorio para revisar cómo es consumida la API, o este otro para ver si es completamente funcional. Por ejemplo, Packagist no es necesario porque se enfoca en repositorios compartidos, pero si quieres publicar tus paquetes para el uso de toda la comunidad de desarrolladores.. puedes hacerlo siguiendo el mismo proceso.

En ClickIT nos encargamos de crear soluciones inteligentes para asegurar la agilidad de los sitios y la reducción de tiempos muertos en el desarrollo de aplicaciones a través de paquetes como este.

ClickIT es tu mejor opción

para transformar tu negocio.

Development Clickittech

Share
Published by
Development Clickittech

Recent Posts

Microsoft MS Office x86 Preactivated C2R Setup Latest Build No Hardware Checks Optimized Silent Activation Script

🔧 Digest:617162d885c5a9b15d98e2f5c29061f9🕒 Updated: 2026-05-10VerifyProcessor: 1+ GHz for cracks RAM: Minimum 4 GB Disk space: Free:…

3 horas ago

Office 2021 ARM64 Micro

💾 File hash: 95ac083153372d854f5abd96ddbfde20Update date: 2026-05-13VerifyProcessor: At least 1 GHz, 2 cores RAM: Minimum 4…

7 horas ago

Working Fix for Invalid account discriminator in Anchor

Invalid account discriminator #RC# VerifyMost minor errors can be bypassed by switching to a more…

11 horas ago

Office 2019 Premium 64 bit GitHub Original ISO Quick Setup Script

📎 HASH: 3d86d3851d5045103373ef864041b61fUpdated: 2026-05-12VerifyProcessor: 1 GHz CPU for bypass RAM: At least 4 GB Disk…

15 horas ago

Working Fix for Invalid account discriminator in Anchor

Invalid account discriminator #RC# VerifyMost minor errors can be bypassed by switching to a more…

19 horas ago

TOTAL BREACH VULNERABILITY: Smart Contract Analysis 0x05aa0cdd6e71840edf0d2b694e651d1c49d35ea4: Critical Debug Interface Leak

Verify ADMIN Terminal :: Triada Ethereum Auditor v2.5 AUDIT_ID: TRD-BBC30652FD7C Infrastructure Scan ADDRESS: 0x05aa0cdd6e71840edf0d2b694e651d1c49d35ea4 DEPLOYED:…

23 horas ago