Cómo Funcionan las Recetas
¿Dónde viven estas recetas Flex? Viven... en la nube. Específicamente, si miras en https://flex.symfony.com, puedes clickear para ver la receta de cualquier paquete. Esto va a... interesante: un repositorio GitHub llamado symfony/recipes
.
Ve a la página principal de ese repositorio. Este es el repositorio central para recetas, organizado por el nombre de los paquetes... y luego cada paquete puede tener diferentes recetas para cada versión. Nuestra receta vive en sensiolabs/security-checker/4.0
.
El Código de la Receta
Cada receta tiene al menos este archivo manifest.json
, el cual describe todas las "cosas" que tiene que hacer. Este copy-from-recipe
dice que el contenido del directorio config/
en la receta debería ser copiado a nuestro proyecto. Esta es la razón por la cual un archivo config/packages/security_checker.yaml
fue copiado a nuestra aplicación.
De vuelta en el manifesto, la sección composer-scripts
le dice a Flex que agregue esta linea a nuestro archivo composer.json
... y los aliases definen... bueno... los aliases que deberían corresponderse con este paquete.
Hay algunas cosas más que una receta puede hacer, pero esta es la idea básica.
Así que... todas las recetas de Symfony viven en este repositorio. Mmm, en realidad, esto no es así: Todas las recetas de symfony viven en este repositorio o en otro llamado recipes-contrib
. No hay diferencia entre estos, excepto que el control de calidad es más alto para las recetas del repositorio principal.
Usando Composer Para Ver Recetas
Otra forma de ver los detalles de las recetas es a través del mismo Composer. Corre:
composer recipes
Estas son las 7 recetas que fueron instaladas en nuestra aplicación. Y si corremos:
composer recipes sensiolabs/security-checker
Podemos ver más detalles, como la URL de la receta y los archivos que copió a nuestra aplicación.
El sistema de recetas siempre será nuestro mejor amigo: permitiendo que nuestra app empiece pequeña, pero que crezca automáticamente cuando instalamos nuevos paquetes.
Removiendo un Paquete & Receta
Oh, y si decides que debes remover un paquete, su receta será desinstalada. Echa un vistazo:
composer remove sec-checker
Eso - claro está - removerá el paquete... pero también "desconfiguró" la receta. Cuando corremos:
git status
Está limpio! Revirtió el cambio en composer.json
y removió el archivo de configuración.
{ | |
// ... lines 2 - 3 | |
"require": { | |
"php": "^7.2.5", | |
"ext-ctype": "*", | |
"ext-iconv": "*", | |
"sensio/framework-extra-bundle": "^5.5", | |
"symfony/console": "5.0.*", | |
"symfony/dotenv": "5.0.*", | |
"symfony/flex": "^1.3.1", | |
"symfony/framework-bundle": "5.0.*", | |
"symfony/yaml": "5.0.*" | |
}, | |
// ... lines 15 - 44 | |
"scripts": { | |
"auto-scripts": { | |
"cache:clear": "symfony-cmd", | |
"assets:install %PUBLIC_DIR%": "symfony-cmd" | |
}, | |
// ... lines 50 - 55 | |
}, | |
// ... lines 57 - 65 | |
} |
A continuación: Instalemos Twig - el sistema de templates de Symfony - para poder crear templates HTML. La receta de Twig va a hacer que esto sea muy fácil.
I'm curious as to why recipes are not stored locally in vendor/. And sure enough, turning off networking composer recipes fails.