Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Conferencia de Composer Scripts

Conferencia de Composer Scripts

Conferencia sobre el uso y aplicaciones de los comandos nativos y scripts personalizados de composer.

Angel Guevara

March 07, 2017
Tweet

More Decks by Angel Guevara

Other Decks in Programming

Transcript

  1. Objetivos ➔ PROMOVER EL USO DE COMPOSER ➔ MOSTRAR COMANDOS

    Y FUNCIONALIDADES NATIVAS DE COMPOSER PARA QUIENES YA LO USAN ➔ MOSTRAR COMO CREAR COMANDOS PERSONALIZADOS DE COMPOSER ➔ EVITAR RE-INVENTAR LA RUEDA AL MANEJAR COMANDOS.
  2. `update` e `install` La mayoría de los desarrolladores asumen que

    composer sólo sirve para ejecutar estos comandos. Instalan y actualizan dependencias configuradas en los archivos composer.json y composer.lock.
  3. Archivo composer.json ➔ Archivo obligatorio para usar composer. ➔ Se

    guarda en la raíz del proyecto. ➔ Primer archivo que leé composer al inicializarse ➔ Guarda la configuración de dependencias. ➔ También define los scripts personalizados que veremos más adelante.
  4. Archivo composer.lock ➔ Auto generado por composer ➔ Se guarda

    en la carpeta raíz del proyecto. ➔ Contiene la información de los paquetes instalados, versiones y fecha de instalación. ➔ No se espera lo lea ni edite un humano. ➔ Si no está definido los comandos `update` o `install` se comportan de forma idéntica.
  5. update e install cuando existe el archivo composer.lock. update ➔

    Ignora el contenido de composer.lock ➔ Recrea el arbol de dependencias ➔ Descarga las versiones más recientes ➔ Actualiza el archivo composer.lock install ➔ Leé el archivo composer.lock ➔ No recrea el árbol de dependencias ➔ Descarga las versiones exactas definidas en el archivo composer.lock ➔ No edita el archivo composer.lock
  6. Mejores Prácticas El archivo composer.lock DEBE estar definido en ramas

    de producción El archivo composer.lock NO DEBERÍA estar definido en ramas de desarrollo, release o pruebas. Si se ejecuta composer update en alguna rama o ambiente de producción se DEBE hacer commit al archivo actualizado composer.lock
  7. Lista de Comandos Composer proveé una lista un comando que

    te muestra los comandos disponibles de composer (incluyendo comandos personalizados). `composer list`
  8. Comando de Ayuda Composer proveé un comando que muestra la

    descripción y opciones de un comando. `composer help [comando]`
  9. Paquetes Instalados El comando `show` y su alias `info` muestra

    el listado de paquetes instalados o la información individual de un paquete instalado en el proyecto `composer show`
  10. Actualizar la Versión de composer self-update es un comando que

    actualiza la versión del mismo ejecutable de composer. Puede requerir permisos de administrador dependiendo como se instaló composer. `composer self-update`
  11. Binarios en composer Algunos paquetes instalados por composer incluyen archivos

    binarios los cuales se guardan por defecto en la carpeta vendor/bin con permisos de ejecución. Estos binarios se pueden ejecutar usando el comando `composer exec` eg: `composer exec -vv -- codecept run`
  12. Lista de Binarios Disponibles El comando exec acepta el parámetro

    --list o su alias -l para mostrar el listado de los binarios instalados. `composer exec --list` `composer exec -l`
  13. Estructura del comando exec El comando `help exec` muestra la

    estructura del comando exec [options] opciones de composer [--] separador entre las opciones de composer y los argumentos del binario [<binary>] Nombre del binario a ejecutar [<args>] argumentos del binario
  14. Nivel de Verbosidad La verbosidad de un comando determina la

    información mostrada en consola. Composer admite niveles de verbosidad de 1 a 3 que se configuran mediante las opciones -v, -vv y -vvv respectivamente. Por defecto ejecuta el binario silenciosamente.
  15. Argumentos de Binarios Después del separador [--] se pueden escribir

    argumentos para el binario, la documentación y argumentos de cada binario no son controlados por composer a partir de este punto.
  16. Definición de Comandos Personalizados Composer permite definir comandos personalizados dentro

    del archivo composer.json en la propiedad `scripts`. Y estos pueden ser ejecutados usando el comando `composer run-script` e.g. `composer run-script hello-world`
  17. Lista de Comandos Personalizados El comando run-script acepta el parámetro

    --list o su alias -l para mostrar el listado de los binarios instalados. `composer run-script --list` `composer run-script -l`
  18. Estructura del comando run-script El comando `help run-script` muestra la

    estructura del comando run-script [options] opciones de composer [--] separador entre las opciones de composer y los argumentos del script [<script>] Nombre del script a ejecutar [<args>] argumentos del script
  19. Tipos de Comandos Se pueden definir varios tipos de comandos.

    ➔ Sentencias de bash. ➔ Comandos de composer usando `@composer` ➔ Comandos de composer y personalizados usando `@comando` ➔ Listeners de php usando `path\\to\\Class::method` ➔ Archivos php usando `@php`
  20. Alias `composer run-script -- [<script>] [<args>]` tiene un alias automático

    escribiendo únicamente. `composer [<script>] -- [<args>]`
  21. Anidación Se pueden anidar tantos comandos como quieras declarándose dentro

    de un arreglo `[]`. El cual puede invocar una combinación arbitraria de todos los métodos anteriores.
  22. Restricciones Los comandos personalizados no pueden tomar el nombre de

    un comando existente. Si se usa un método de clase se tiene que asegurar que la clase sea autocargable con composer y que apunte a un método estático y público.
  23. Argumentos Los argumentos pueden ser enviados al script luego del

    separador [--] y para poder leerlos se necesita tener un listener `path\to\Class:metodo`.
  24. Usos y Aplicaciones ➔ Listar todos los comandos en un

    solo lugar. ➔ Manipular eventos de composer como `post-update-cmd` ➔ Definir alias rápidamente para comandos extensos. ➔ Como todo lo ejecuta composer, eso facilita la homologación de permisos para evitar usar permisos 777. ➔ Anidar varios comandos en uno solo. ➔ Facilidad de edición y segmentación de funcionalidad para seguir SRP.
  25. Agradecimientos Agradezco a mis compañeros de tecnocen sin los cuales

    hubiera terminado esta presentación en la mitad del tiempo.