Dependencias - require en Composer

↑ Me gusta (0)

Hablar de Composer es hablar de paquetes, es conocer el bloque require y usarlo de forma correcta. Toma en cuenta

que para usar un paquete debes saber que ese paquete existe y si no conoces el nombre de los paquetes entonces vamos a Google ¡ejem, ejem! espera... Ya no mas Google, desde ahora vas a buscar todos los paquetes en Packagist https://packagist.org. Packagist es el repositorio principal de Composer, es el centro de paquetes, es donde vas a encontrar herramientas y Framework PHP como Laravel, Symfony y otros (Pensar en Packagist es pensar en PHP). En otras palabras Composer usa este repositorio para descargar los paquetes.

Debes saber que no necesitas estar registrado para usar o descargar, sólo necesitarás una cuenta si quieres fabricar y distribuir un paquete.

NOTA: Lo que debes tomar en cuenta a la hora de usar un paquete son sus números, si el número de descargas es alto y su última actualización es reciente entonces el paquete es confiable... ¡DESCARGAR Y USAR!

Hablando del apartado require vamos a imaginar que en nuestro proyecto vamos a usar el paquete PHPUnit y Carbon, son paquetes comunes, necesarios, confiables y estables. Veamos la diferencia en cuanto al uso: El paquete Carbon es necesario para nuestra aplicación en general y PHPUnit solo para el entorno de desarrollo, en otras palabras y de forma mas clara se puede decir lo siguiente:

  • Production: Carbon.
  • Local: PHPUnit.

Breve explicación

PHPUnit: Es conocido como un Framework de pruebas. Es popular y como su nombre lo dice está disponible para PHP.

Carbon: Es una muy buena extensión de DataTime de PHP, su función es ayudarnos a manipular de una mejor manera las fechas.

Si necesito estos paquetes para mi proyecto, mi archivo composer.json debe estar estructurado de la siguiente manera:

{
    "name": "italomoralesf/require",
    "description": "Explicación de require",
    "type": "project",
    "require": {
        "nesbot/carbon": "^1.22"
    },
    "require-dev": {
        "phpunit/phpunit": "^6.5"
    },
    "authors": [
        {
            "name": "Italo Morales F",
            "email": "[email protected]"
        }
    ]
}

Allí en el ejemplo vemos lo que hemos aprendido, está el autor, descripción, nombre del paquete y otros... Y en este post solo debemos enfocarnos en la llave require que como podemos apreciar tenemos también require-dev y es donde tendremos los paquetes que solo vamos a usar cuando estemos desarrollando y no en producción.

Nuestros paquetes tienen su número de versión y para la fecha de hoy (6 de Diciembre del 2017) esas son las últimas versiones (si ves este texto en el futuro y las versiones cambian, no te preocupes, la teoría es la misma).

Importante Desarrollo

require-dev: En entornos de desarrollo, tenemos diferentes requisitos y ventajas de usarlo. En nuestro ejemplo instalamos PHPUnit, que es una herramienta muy necesaria solo para el desarrollo y no para producción. Esto es así para evitar desperdicios a nivel de recursos. Esta es la diferencia y función de segmentar los paquetes en require o require-dev, también es importante agregar que nos beneficia a nivel de seguridad porque los paquetes de desarrollo tienen habilitados los errores y otras cosas así que solo nos interesan al momento de fabricar, lo que quiere decir que nuestro sistema permanece seguro ya que en producción no haremos uso de los paquete de desarrollo.

Conclusión

Podemos ver que al momento de crear un sistema tenemos paquetes que serán usados en entorno de producción y otros en entorno de desarrollo, ahí está la clave para entender las llaves require y require-dev ¡Eso es justo el objetivo de este post!