Transcript
Page 1: Drupal grunt task  - Drupal Camp CR 2015

Drupal Grunt TaskConstruir y probar Drupal usando Grunt

Drupal Camp Costa Rica 2015

Page 2: Drupal grunt task  - Drupal Camp CR 2015

Quien Soy?Daniel Noyola

Correo: [email protected]: danielnv18Twitter: @danielnv18

Full Stack Developer

Page 3: Drupal grunt task  - Drupal Camp CR 2015

Construyendo Drupal

Page 4: Drupal grunt task  - Drupal Camp CR 2015

Desarrollo en DrupalEnfoque: instale y ejecute

Descargar e instalar -> Agregar codigo -> Subir al servidor

Enfoque: Contruya y pruebe

Drush Make -> Codigo -> Confirmar codigo -> Compilar Sass ->Ejecutar Behat -> git commit

Page 5: Drupal grunt task  - Drupal Camp CR 2015

Porque Contruir Drupal?1. Drush make2. Dejamos de mezclar el código contribuido/core y código custom.3. Tenemos control de nuestras dependecias.4. Una manera simplificada de de ver nuestras librerías y recursos.5. Reforzar la idea de automatizar.

Page 6: Drupal grunt task  - Drupal Camp CR 2015

Porque Probar Drupal?1. Sitios complejos necesitan ser probados más allá de unos cuantos

clicks.2. Empoderar a los desarrolladores para producir código de calidad.3. Encontrar errores en el código antes de integrar.

Page 7: Drupal grunt task  - Drupal Camp CR 2015

Surgen Preguntas1. Como nos aseguramos que todos usan la mismas herramientas en

la misma manera?2. Como separamos nuestro código fuente de las dependencias y

crear un output corecto?

Page 8: Drupal grunt task  - Drupal Camp CR 2015

Grunt

Page 9: Drupal grunt task  - Drupal Camp CR 2015

Porque Grunt?Es un ejecutador de tareas basado en javascript.Fuerte comunidad, flexible, ampliamente adoptado.Solamente requiere node.js.Tiene un enfoque simple: tareas en js, configuración en JSON.4,000+ Plugins Contruibuidos.

Page 10: Drupal grunt task  - Drupal Camp CR 2015

Grunt, Genial!Tutorial en escribir un script en Grunt minificar JavaScript usando la

herramienta "uglify"

http://gruntjs.com/getting-started

Page 11: Drupal grunt task  - Drupal Camp CR 2015

Drupal Grunt Task

Page 12: Drupal grunt task  - Drupal Camp CR 2015

Drupal Grunt Task

https://github.com/phase2/grunt-drupal-tasks

grunt-drupal-task es un conjunto de herramientas que nos ayudanconstruir y probar (aka Testear) Drupal y otras herramientas comunes

en Drupal

Page 13: Drupal grunt task  - Drupal Camp CR 2015

Tiene opiniones1. Aplica practicas en todo el equipo y el ambiente de CI (Continuous

Integration)2. Asume cierto flujo en el codigo

1. Verificar la calidad del código custom.2. Acoplar core y contrib con el código custom con Drush Make.3. Ejecutar pruebas.

Page 14: Drupal grunt task  - Drupal Camp CR 2015

Reúne una serie de herramientas

Page 15: Drupal grunt task  - Drupal Camp CR 2015

Se queda fuera de tu camino1. Todas las tareas se pueden modificar.2. Administra sus propias dependencias.3. Las herramientas son faciles de usar.

Page 16: Drupal grunt task  - Drupal Camp CR 2015

Comenzando

Page 17: Drupal grunt task  - Drupal Camp CR 2015

DependenciasAntes de comenzar tenemos que estar seguros que tenemos

node.js (npm)Se recomienda para soportar el resto de herramientas

Bundler, Composer, Ruby y RubyGemsOpcional

npm install -g generator-gadget grunt-cli yo

yo gadget

Page 18: Drupal grunt task  - Drupal Camp CR 2015

Estructura del Projecto

Page 19: Drupal grunt task  - Drupal Camp CR 2015

Estructura del Projecto

Page 20: Drupal grunt task  - Drupal Camp CR 2015

Estructura del node_modules

Page 21: Drupal grunt task  - Drupal Camp CR 2015

Estructura del src/

Page 22: Drupal grunt task  - Drupal Camp CR 2015
Page 23: Drupal grunt task  - Drupal Camp CR 2015

Estructura del test

Page 24: Drupal grunt task  - Drupal Camp CR 2015

Objetivos1. Acomodar (y aislar) el código custom, Drupal Core, código

contribuido, archivos de configuración y herramientas de soporte.2. Permitir a todas la herramientas trabajar en conjunto con el minimo

esfuerzo.3. Estandarizar la estructura base de un projecto

Page 25: Drupal grunt task  - Drupal Camp CR 2015

Construyendo

Page 26: Drupal grunt task  - Drupal Camp CR 2015

Construccion del projectoUtilizamos grunt para construir el projecto:grunt

Page 27: Drupal grunt task  - Drupal Camp CR 2015

Pasos de contruccionCompass / BundleValida CodigoDrush makeInserta el codigo custom en el sitioCompilar el Tema

Page 28: Drupal grunt task  - Drupal Camp CR 2015

Directorio build/html

Page 29: Drupal grunt task  - Drupal Camp CR 2015

Directorio vendor

Page 30: Drupal grunt task  - Drupal Camp CR 2015

Directorio build/html

Page 31: Drupal grunt task  - Drupal Camp CR 2015

SymLinks?1. No hay necesidada de re-contruir despues de un cambio en el

codigo2. La tarea "build" se encarga de que los Symlink esten correctos3. Los link son relativos a la aplicacion4. XDebug funciona con simlinks5. Usuarios de windows: CUIDADO!

Page 32: Drupal grunt task  - Drupal Camp CR 2015

Se ejecuta automaticoEjecuta "validate", compila el tema, drush make (si es necesario)

cuando un archivo es modificado.grunt watch

Page 33: Drupal grunt task  - Drupal Camp CR 2015

La forma de construccion1. Captura el flujo de trabajo diario.2. Produce un sitio completo en Drupal desde codigo custom y un

archivo make.3. Contruido local, contruir sobre la integracion.

Page 34: Drupal grunt task  - Drupal Camp CR 2015

Haslo a tu maneraLas tareas de contruccion puede ser ejecutadas individualmente.Demosle un vistaso a las tareas predefinidas.

Page 35: Drupal grunt task  - Drupal Camp CR 2015

Validation

Page 36: Drupal grunt task  - Drupal Camp CR 2015

Validando la calidad del codigo1. Utiliza lints y analisis de codigo estatico para cuantificar la calidad

del codigo2. Podemos ejecutar PHP Lint y PHP Code Sniffer (con los estandares

de codigo de Drupal)grunt validate

Page 37: Drupal grunt task  - Drupal Camp CR 2015

PHP LintVerifica la sintaxis con la herramienta integrada en php.

Page 38: Drupal grunt task  - Drupal Camp CR 2015

PHP Code SnifferVerifica el estilo del codigo para que conicida con Drupal Code

Standards

Page 39: Drupal grunt task  - Drupal Camp CR 2015

Verifiquemos antes de hacer algo1. Anima a los desarrolladores a validar el codigo antes de subirlo.2. Enfoca la arquitentura en revisiones de codigo.3. Rechazar el deployment o PR bajo ciertos parametros.

Page 40: Drupal grunt task  - Drupal Camp CR 2015

Compilando el tema

Page 41: Drupal grunt task  - Drupal Camp CR 2015

Herramientas Front-end1. Compass fue una de la primeras herramientas no-PHP comun en la

implementacion de Drupal2. Puedes configurar GDT para definir la compilacion de los temas

grunt compile-theme

Page 42: Drupal grunt task  - Drupal Camp CR 2015

CompassIncluya el archivo Gemfile para instalar y para requerir gemasCompass compile es ejecutado durante la construccion del sitio

grunt compass

Page 43: Drupal grunt task  - Drupal Camp CR 2015

Grunt-to-GruntDelegar tareas a los temas que estan basados en grunt.WIP (Work in progress)

Page 44: Drupal grunt task  - Drupal Camp CR 2015

Testing

Page 45: Drupal grunt task  - Drupal Camp CR 2015

Probando los "features" del sitioProbar de Behat, Extenciones Drupal y otras dependenciasProbar el sitio con Behat requiere que Drupal este instalado yaccesible por URL2 opciones para ejecutar pruebas localmente

Usando un ambiente local (Docker,VM, W/MAMP)Usando el servidor integrado en PHP/Drush

grunt drush:liteinstall

Page 46: Drupal grunt task  - Drupal Camp CR 2015

Ejecutando las pruebasgrunt test

Page 47: Drupal grunt task  - Drupal Camp CR 2015

Hacia BDDGDT suporta el fujo de trabajo de BDD/TDD

Primero se escriben las pruebasCodido interactua con el feedback de la pruebaSe puede automatizar mediante la tarea watch

Incluye herramientas y scripts de prueba para comenzar a probar

Page 48: Drupal grunt task  - Drupal Camp CR 2015

Empaquetamiento y despliegue (Deployment)

Page 49: Drupal grunt task  - Drupal Camp CR 2015

DeploymentEsta hecho para desarrollo local y ambientes de integracionPrepara el codigo para el lanzamamientoEntrega el codigo a otras herramientas de deployment

Page 50: Drupal grunt task  - Drupal Camp CR 2015

EmpaquetamientoProduce una version aislada, desplegable con DrupalExcluye herramientas de soporte y configuracion

grunt package

Page 51: Drupal grunt task  - Drupal Camp CR 2015

Liberando el codigoSe esta explorando como se pueden soportar processos de liberacion

(release)

1. Commit el codigo a un repositorio (Acquia, Pantheon)2. Integrarlo con otras herramientas de release/deployment

(Capistrano, ShipIt)

Page 52: Drupal grunt task  - Drupal Camp CR 2015

Configurando y extendiendo

Page 53: Drupal grunt task  - Drupal Camp CR 2015

ConfiguracionOpciones configurable en Gruntconfig.json

La fuente y directorio de contruccionOpciones para ejecutar behatArgumentos a la ejecucion de Drush MakeOpciones para la configuracion de los temasIncluir / Excluir archivos para el empaquetamiento

Page 54: Drupal grunt task  - Drupal Camp CR 2015

ExtendiendoLa entension es posible a travez de cambios en Gruntfile.js

Agregar nuevas tareas, reemplazar existentesEjecutar un comando de consola como una tareaSobre escribir los pasos por defecto para la construccion del sitio

Page 55: Drupal grunt task  - Drupal Camp CR 2015

Para Finalizar

Page 56: Drupal grunt task  - Drupal Camp CR 2015

PruebaloIntenta usar Drupal Grunt Task en tu siguiente projectoCreat issue en GitHub para compartir como deberia funcionar mejorParches son bienvenidos (a.k.a Pull Request en GitHub)

Page 57: Drupal grunt task  - Drupal Camp CR 2015

Roadmap1. Suportar mas herramientas de calidad de codigo (PHPunit Sass/js

lint)2. Delegar para temas que hacen uso de grunt3. Mas opciones de releasing/deployment4. Contruir Drupal con composer5. Integracion con Drupal Console

Page 58: Drupal grunt task  - Drupal Camp CR 2015

Preguntas?Codigo Usado para la presentacion

https://github.com/danielnv18/gdt-drupalcamp-cr-2015

Presentacion


Top Related