Dependencias - require en Composer

require composer

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": "i@italomoralesf.com"
        }
    ]
}

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!

Adquiere en preventa y aprovecha un gran descuento TDD en Laravel

Comparte en

Creado por: Venezuela Italo Morales

Profesor de #Laravel y #PHP en Rimorsoft Online

Más información


Spatie/Laravel Permission ¿Cómo agregar campos en la tabla "roles"?

Hola, mi consulta es la siguiente:

Relacioné la tabla "roles" con mi tabla** "empresa**", es decir, en la tabla "roles", tengo el campo "id_empresa", en la vista, están los campos necesarios y el select de la empresa pero al querer guardar los datos, me arroja el siguiente error: ** "The given role or permission should use guard web instead of Empresas. "** No ...

SOFTWARE PARA CONSULTORIOS MEDICOS

Hola Amigos. soy nuevo en el grupo.. me gustaria saber si alguien tiene o tuvo algun proyecto basado en laravel, para consultorios medicos? ...

sincronización de componentes hermanos

un gran saludo a la comunidad rimorsorf... espero de su valiosa ayuda para mi problema que es el siguiente:

tengo dos componentes en el mismo nivel, el primero crea una tabla con una lista de procesos por tramitar y el segundo componente lista en una tabla los procesos que se han asignado para tramitar; cuando en la primera tabla se asigna el proceso este debe desaparecer de...

plantilla blade y vuejs2

buenas noches comunidad, por casualidad alguien sabrá si se puede integrar la plantilla de laravel blade en vuejs2 component??, gracias dee antemano...