Vamos a instalar un paquete totalmente nuevo dentro de nuestra aplicación llamada "security checker".
El security checker es una herramienta que revisa las dependencias de tu aplicación y te dice
si alguna de estas tiene vulnerabilidades de seguridad conocidas.
Pero, confidencialmente, tan genial como lo es...
la verdadera razón por la que quiero instalar esta librería es por ser una buena forma de ver
el importantísimo sistema de "recetas" de Symfony.
En tu terminal, ejecuta: composer require sec-checker En una aplicación real,
probablemente deberías pasar --dev para agregar esto a tus dependencias dev...
pero eso no nos preocupa a nosotros.
No obstante, hay algo extraño aquí.
Específicamente...
¡sec-checker no es un nombre de paquete válido!
En el mundo de Composer, cada paquete debe ser algo/algo-más:
No puede ser solamente sec-checker.
Entonces que diantres está pasando?
De vuelta en PhpStorm, abre composer.json.
Cuando iniciamos el proyecto, teníamos solo algunas dependencias en este archivo.
Uno de estas es symfony/flex.
Este es un plugin de Composer que agrega dos características especiales al mismo Composer
La primera se llama "aliases"
En tu navegador, ve a http://flex.symfony.com para encontrar una larga página llena de paquetes
Busca security.
Aún mejor, busca sec-checker.
Bingo! La misma dice que hay un paquete llamado sensiolabs/security-checker y tiene aliases
de sec-check, sec-checker, security-checker y algunas más.
El sistema de alias es simple: debido a que tenemos Symfony Flex instalado
podemos ejecutar composer require security-checker,
Y lo que hará será descargar sensiolabs/security-checker.
Puedes ver esto en la terminal: requerimos sec-checker,
pero finalmente descargó sensiolabs/security-checker.
Eso es también lo que Composer agregó a nuestro archivo composer.json.
Entonces... los aliases simplemente funcionan como atajos...
¡pero eso es algo fantástico!
Casi que puedes adivinar un alias cuando quieres instalar algo.
Quieres un logger?
Ejecuta composer require logger para conseguir el logger recomendado
Necesitas envíar correos?
composer require mailer.
Necesitas comer un pastel?
composer require cake!
La segunda característica que Flex agrega a Composer es la más importante.
Es el sistema de recetas.
En la terminal, después de instalar el paquete, nos menciona: Symfony operations:
1 receta de configuración para sensiolabs/security-checker.
Interesante.
Ejecuta: git status Wow!
Esperábamos que composer.json y composer.lock fueran modificados...
así es como composer funciona.
Pero algo también modificó al archivo symfony.lock...
y agregó un archivo totalmente nuevo security_checker.yaml!
Bien, primero, symfony.lock es un archivo que es gestionado por Flex.
No necesitas preocuparte por ello pero debes guardar sus cambios.
Mantiene una gran lista de cuáles recetas se han instalado.
Entonces, ¿Quién creó el otro archivo?
Abre: config/packages/security_checker.yaml.
Cada paquete que instalas puede tener una receta de Flex.
Esta idea es maravillosamente simple.
En lugar de decirle a la gente que instale un paquete y después crear este archivo,
y actualizar este otro archivo para hacer que las cosas funcionen, Flex ejecuta una receta que...
¡hace todo esto por ti!
Este archivo ha sido agregado por la receta sensiolabs/security-checker!
No necesitas preocuparte por lo que contiene este archivo por el momento.
El punto es, que gracias a este archivo ya tenemos un nuevo comando bin/console.
Ejecuta: php bin/console Ves el comando security:check?
No estaba ahí hace un segundo.
Está ahora ahí gracias al nuevo archivo YAML.
Pruébalo: php bin/console security:check No hay paquetes con vulnerabilidades conocidas!
Genial!, aquí está el panorama general: gracias al sistema de recetas, cada vez que instales una librería,
Flex revisará si esa librería tiene una receta y si la tiene, la instalará.
Una receta puede hacer muchas cosas, como agregar archivos, crear directorios o incluso modificar algunos archivos,
como agregar nuevas líneas a tu archivo .gitignore
El sistema de recetas cambia las reglas del juego
Me encanta, ya que cada vez que necesito una nueva librería, todo lo que tengo que hacer es instalarla.
No necesito agregar archivos de configuración o modificar algo
ya que la receta automatiza todo ese trabajo aburrido
De hecho, esta receta hizo algo más que no nos dimos cuenta.
En la terminal, ejecuta: git diff composer.json Esperábamos
que Composer agregara esta nueva linea a la sección "require".
Pero también hay una nueva línea en la sección "scripts".
Eso fue realizado por la receta.
Gracias a esto, cada vez que ejecutes: composer install Después de terminar,
automáticamente ejecutará el comando security checker.
El punto es: para usar el comando security checker, lo único que teníamos que hacer era...
Instalarlo.
Su receta se hizo cargo del resto de la configuración.
Ahora... si te estás preguntando: Oye!
Dónde rayos vive esta receta?
Puedo verla?
Esa es una gran pregunta!
Veámoslo a continuación.