SlideShare una empresa de Scribd logo
1 de 58
Descargar para leer sin conexión
Drupal Grunt Task
Construir y probar Drupal usando Grunt
Drupal Camp Costa Rica 2015
Quien Soy?
Daniel Noyola
Correo: d.noyola@paralleldevs.com
Github: danielnv18
Twitter: @danielnv18
Full Stack Developer
Construyendo Drupal
Desarrollo en Drupal
Enfoque: 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
Porque Contruir Drupal?
1. Drush make
2. 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.
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.
Surgen Preguntas
1. 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?
Grunt
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.
Grunt, Genial!
Tutorial en escribir un script en Grunt minificar JavaScript usando la
herramienta "uglify"
http://gruntjs.com/getting-started
Drupal Grunt Task
Drupal Grunt Task
https://github.com/phase2/grunt-drupal-tasks
grunt-drupal-task es un conjunto de herramientas que nos ayudan
construir y probar (aka Testear) Drupal y otras herramientas comunes
en Drupal
Tiene opiniones
1. 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.
Reúne una serie de herramientas
Se queda fuera de tu camino
1. Todas las tareas se pueden modificar.
2. Administra sus propias dependencias.
3. Las herramientas son faciles de usar.
Comenzando
Dependencias
Antes de comenzar tenemos que estar seguros que tenemos
node.js (npm)
Se recomienda para soportar el resto de herramientas
Bundler, Composer, Ruby y RubyGems
Opcional
npm install -g generator-gadget grunt-cli yo
yo gadget
Estructura del Projecto
Estructura del Projecto
Estructura del node_modules
Estructura del src/
Estructura del test
Objetivos
1. 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
Construyendo
Construccion del projecto
Utilizamos grunt para construir el projecto:
grunt
Pasos de contruccion
Compass / Bundle
Valida Codigo
Drush make
Inserta el codigo custom en el sitio
Compilar el Tema
Directorio build/html
Directorio vendor
Directorio build/html
SymLinks?
1. No hay necesidada de re-contruir despues de un cambio en el
codigo
2. La tarea "build" se encarga de que los Symlink esten correctos
3. Los link son relativos a la aplicacion
4. XDebug funciona con simlinks
5. Usuarios de windows: CUIDADO!
Se ejecuta automatico
Ejecuta "validate", compila el tema, drush make (si es necesario)
cuando un archivo es modificado.
grunt watch
La forma de construccion
1. 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.
Haslo a tu manera
Las tareas de contruccion puede ser ejecutadas individualmente.
Demosle un vistaso a las tareas predefinidas.
Validation
Validando la calidad del codigo
1. Utiliza lints y analisis de codigo estatico para cuantificar la calidad
del codigo
2. Podemos ejecutar PHP Lint y PHP Code Sniffer (con los estandares
de codigo de Drupal)
grunt validate
PHP Lint
Verifica la sintaxis con la herramienta integrada en php.
PHP Code Sniffer
Verifica el estilo del codigo para que conicida con Drupal Code
Standards
Verifiquemos antes de hacer algo
1. 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.
Compilando el tema
Herramientas Front-end
1. Compass fue una de la primeras herramientas no-PHP comun en la
implementacion de Drupal
2. Puedes configurar GDT para definir la compilacion de los temas
grunt compile-theme
Compass
Incluya el archivo Gemfile para instalar y para requerir gemas
Compass compile es ejecutado durante la construccion del sitio
grunt compass
Grunt-to-Grunt
Delegar tareas a los temas que estan basados en grunt.
WIP (Work in progress)
Testing
Probando los "features" del sitio
Probar de Behat, Extenciones Drupal y otras dependencias
Probar el sitio con Behat requiere que Drupal este instalado y
accesible por URL
2 opciones para ejecutar pruebas localmente
Usando un ambiente local (Docker,VM, W/MAMP)
Usando el servidor integrado en PHP/Drush
grunt drush:liteinstall
Ejecutando las pruebas
grunt test
Hacia BDD
GDT suporta el fujo de trabajo de BDD/TDD
Primero se escriben las pruebas
Codido interactua con el feedback de la prueba
Se puede automatizar mediante la tarea watch
Incluye herramientas y scripts de prueba para comenzar a probar
Empaquetamiento y despliegue (Deployment)
Deployment
Esta hecho para desarrollo local y ambientes de integracion
Prepara el codigo para el lanzamamiento
Entrega el codigo a otras herramientas de deployment
Empaquetamiento
Produce una version aislada, desplegable con Drupal
Excluye herramientas de soporte y configuracion
grunt package
Liberando el codigo
Se 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)
Configurando y extendiendo
Configuracion
Opciones configurable en Gruntconfig.json
La fuente y directorio de contruccion
Opciones para ejecutar behat
Argumentos a la ejecucion de Drush Make
Opciones para la configuracion de los temas
Incluir / Excluir archivos para el empaquetamiento
Extendiendo
La entension es posible a travez de cambios en Gruntfile.js
Agregar nuevas tareas, reemplazar existentes
Ejecutar un comando de consola como una tarea
Sobre escribir los pasos por defecto para la construccion del sitio
Para Finalizar
Pruebalo
Intenta usar Drupal Grunt Task en tu siguiente projecto
Creat issue en GitHub para compartir como deberia funcionar mejor
Parches son bienvenidos (a.k.a Pull Request en GitHub)
Roadmap
1. Suportar mas herramientas de calidad de codigo (PHPunit Sass/js
lint)
2. Delegar para temas que hacen uso de grunt
3. Mas opciones de releasing/deployment
4. Contruir Drupal con composer
5. Integracion con Drupal Console
Preguntas?
Codigo Usado para la presentacion
https://github.com/danielnv18/gdt-drupalcamp-cr-2015
Presentacion

Más contenido relacionado

La actualidad más candente

Desarrollo de aplicaciones realmente nativas con NDK
Desarrollo de aplicaciones realmente nativas con NDKDesarrollo de aplicaciones realmente nativas con NDK
Desarrollo de aplicaciones realmente nativas con NDKSoftware Guru
 
Net Core + Docker + Kubernetes + Azure Devops
Net Core + Docker + Kubernetes + Azure DevopsNet Core + Docker + Kubernetes + Azure Devops
Net Core + Docker + Kubernetes + Azure DevopsAndrés Londoño
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?Micael Gallego
 
Workshop docker: Iniciando en el Mundo de los Contenedores
Workshop docker: Iniciando en el Mundo de los ContenedoresWorkshop docker: Iniciando en el Mundo de los Contenedores
Workshop docker: Iniciando en el Mundo de los ContenedoresJesús A. Rodríguez B.
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a DockerOpen Canarias
 
Proyect Evenge. Event manager
Proyect Evenge. Event managerProyect Evenge. Event manager
Proyect Evenge. Event managerIvan Ortega
 

La actualidad más candente (10)

Usando notebook en el aula
Usando notebook en el aulaUsando notebook en el aula
Usando notebook en el aula
 
Desarrollo de aplicaciones realmente nativas con NDK
Desarrollo de aplicaciones realmente nativas con NDKDesarrollo de aplicaciones realmente nativas con NDK
Desarrollo de aplicaciones realmente nativas con NDK
 
Net Core + Docker + Kubernetes + Azure Devops
Net Core + Docker + Kubernetes + Azure DevopsNet Core + Docker + Kubernetes + Azure Devops
Net Core + Docker + Kubernetes + Azure Devops
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?
 
Java poliglota
Java poliglotaJava poliglota
Java poliglota
 
Workshop docker: Iniciando en el Mundo de los Contenedores
Workshop docker: Iniciando en el Mundo de los ContenedoresWorkshop docker: Iniciando en el Mundo de los Contenedores
Workshop docker: Iniciando en el Mundo de los Contenedores
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
 
Introducción a ndk
Introducción a ndkIntroducción a ndk
Introducción a ndk
 
Gwt I - entendiendo gwt
Gwt I - entendiendo gwtGwt I - entendiendo gwt
Gwt I - entendiendo gwt
 
Proyect Evenge. Event manager
Proyect Evenge. Event managerProyect Evenge. Event manager
Proyect Evenge. Event manager
 

Destacado

Capacitación Fenicia Temas del ser
Capacitación Fenicia Temas del serCapacitación Fenicia Temas del ser
Capacitación Fenicia Temas del serFenalco Antioquia
 
Présentation du Ministre Wilson Laleau au Forum Economique du Secteur Privé: ...
Présentation du Ministre Wilson Laleau au Forum Economique du Secteur Privé: ...Présentation du Ministre Wilson Laleau au Forum Economique du Secteur Privé: ...
Présentation du Ministre Wilson Laleau au Forum Economique du Secteur Privé: ...Fritz-Gérald Calixte, Av., MPA
 
Capacitación Fenicia Empresarial contabilidad y finanzas
Capacitación Fenicia Empresarial contabilidad y finanzasCapacitación Fenicia Empresarial contabilidad y finanzas
Capacitación Fenicia Empresarial contabilidad y finanzasFenalco Antioquia
 
Espléndidamente hermoso
Espléndidamente hermosoEspléndidamente hermoso
Espléndidamente hermosoPadre Carlos
 
Trabajo de ofimática un miembro mas de la flia.
Trabajo de ofimática   un miembro mas de la flia.Trabajo de ofimática   un miembro mas de la flia.
Trabajo de ofimática un miembro mas de la flia.Felipe Almeida
 
Mi contexto de formación
Mi contexto de formaciónMi contexto de formación
Mi contexto de formaciónrosaurarv
 
Posible titulo de investigación
Posible titulo de investigaciónPosible titulo de investigación
Posible titulo de investigaciónNoris Pérez
 
A New Model to Measure Event Impact
A New Model to Measure Event ImpactA New Model to Measure Event Impact
A New Model to Measure Event ImpactDoubleDutch
 
Las normas al debate
Las normas al debateLas normas al debate
Las normas al debatewiamemb
 
Body Languagge by Neeraj Bhandari (Surkhet,Nepal)
Body Languagge by Neeraj Bhandari (Surkhet,Nepal)Body Languagge by Neeraj Bhandari (Surkhet,Nepal)
Body Languagge by Neeraj Bhandari (Surkhet,Nepal)Neeraj Bhandari
 
Verbos,taxonomia bloom
Verbos,taxonomia bloomVerbos,taxonomia bloom
Verbos,taxonomia bloomfabymohedano
 
Digital graphics pro forma by james horbury
Digital graphics pro forma by james horburyDigital graphics pro forma by james horbury
Digital graphics pro forma by james horburyjames horbury
 
How to use Instagram for marketing ppt- AdHutMedia
How to use Instagram for marketing ppt- AdHutMediaHow to use Instagram for marketing ppt- AdHutMedia
How to use Instagram for marketing ppt- AdHutMediaAdHut Media
 

Destacado (18)

Tics de la educacion
Tics de la educacionTics de la educacion
Tics de la educacion
 
Capacitación Fenicia Temas del ser
Capacitación Fenicia Temas del serCapacitación Fenicia Temas del ser
Capacitación Fenicia Temas del ser
 
Présentation du Ministre Wilson Laleau au Forum Economique du Secteur Privé: ...
Présentation du Ministre Wilson Laleau au Forum Economique du Secteur Privé: ...Présentation du Ministre Wilson Laleau au Forum Economique du Secteur Privé: ...
Présentation du Ministre Wilson Laleau au Forum Economique du Secteur Privé: ...
 
Capacitación Fenicia Empresarial contabilidad y finanzas
Capacitación Fenicia Empresarial contabilidad y finanzasCapacitación Fenicia Empresarial contabilidad y finanzas
Capacitación Fenicia Empresarial contabilidad y finanzas
 
Competencias en tics
Competencias en ticsCompetencias en tics
Competencias en tics
 
Espléndidamente hermoso
Espléndidamente hermosoEspléndidamente hermoso
Espléndidamente hermoso
 
Artikel Ikan Koi
Artikel Ikan KoiArtikel Ikan Koi
Artikel Ikan Koi
 
Trabajo de ofimática un miembro mas de la flia.
Trabajo de ofimática   un miembro mas de la flia.Trabajo de ofimática   un miembro mas de la flia.
Trabajo de ofimática un miembro mas de la flia.
 
Mi contexto de formación
Mi contexto de formaciónMi contexto de formación
Mi contexto de formación
 
Posible titulo de investigación
Posible titulo de investigaciónPosible titulo de investigación
Posible titulo de investigación
 
resume comm
resume commresume comm
resume comm
 
A New Model to Measure Event Impact
A New Model to Measure Event ImpactA New Model to Measure Event Impact
A New Model to Measure Event Impact
 
Las normas al debate
Las normas al debateLas normas al debate
Las normas al debate
 
Body Languagge by Neeraj Bhandari (Surkhet,Nepal)
Body Languagge by Neeraj Bhandari (Surkhet,Nepal)Body Languagge by Neeraj Bhandari (Surkhet,Nepal)
Body Languagge by Neeraj Bhandari (Surkhet,Nepal)
 
DECISION SUPPORT SYSTEM
DECISION SUPPORT SYSTEMDECISION SUPPORT SYSTEM
DECISION SUPPORT SYSTEM
 
Verbos,taxonomia bloom
Verbos,taxonomia bloomVerbos,taxonomia bloom
Verbos,taxonomia bloom
 
Digital graphics pro forma by james horbury
Digital graphics pro forma by james horburyDigital graphics pro forma by james horbury
Digital graphics pro forma by james horbury
 
How to use Instagram for marketing ppt- AdHutMedia
How to use Instagram for marketing ppt- AdHutMediaHow to use Instagram for marketing ppt- AdHutMedia
How to use Instagram for marketing ppt- AdHutMedia
 

Similar a Construir y probar Drupal con Grunt

Gestionar mis proyectos con ayuda de CodeIgniter
Gestionar mis proyectos con ayuda de CodeIgniterGestionar mis proyectos con ayuda de CodeIgniter
Gestionar mis proyectos con ayuda de CodeIgniterandrewzg
 
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs Academy
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs AcademyBootCamp Online en DevOps (and SecDevOps) de GeeksHubs Academy
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs AcademyTelefónica
 
BEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA_es
 
Presentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones SegurasPresentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones SegurasJosé Moreno
 
Depuración de aplicaciones en visual studio
Depuración de aplicaciones en visual studioDepuración de aplicaciones en visual studio
Depuración de aplicaciones en visual studioJavier Hermoso Blanco
 
Instalacion y configuracion de Android Studio
Instalacion y configuracion de Android StudioInstalacion y configuracion de Android Studio
Instalacion y configuracion de Android StudioJuan Vladimir
 
administracion de sistemas de informacion
administracion de sistemas de informacionadministracion de sistemas de informacion
administracion de sistemas de informacionStivenLopez46
 
Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Edgar Dueñas
 
Continuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudioContinuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudioOsvaldo
 
Continuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudioContinuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudioOsvaldo
 
Desarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyDesarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyJorge Antonio Linares Vera
 
Herramientas de programación para desarrolladores
Herramientas de programación para desarrolladoresHerramientas de programación para desarrolladores
Herramientas de programación para desarrolladoresBBVA API Market
 
DockerCon 2022 Spanish Room-ONBOARDING.pdf
DockerCon 2022 Spanish Room-ONBOARDING.pdfDockerCon 2022 Spanish Room-ONBOARDING.pdf
DockerCon 2022 Spanish Room-ONBOARDING.pdfAngel Borroy López
 
Probando aplicaciones AngularJS
Probando aplicaciones AngularJSProbando aplicaciones AngularJS
Probando aplicaciones AngularJSRodrigo Pimentel
 
Automatice el proceso de entrega con CI/CD en AWS
Automatice el proceso de entrega con CI/CD en AWSAutomatice el proceso de entrega con CI/CD en AWS
Automatice el proceso de entrega con CI/CD en AWSAmazon Web Services LATAM
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsSoftware Guru
 

Similar a Construir y probar Drupal con Grunt (20)

Gestionar mis proyectos con ayuda de CodeIgniter
Gestionar mis proyectos con ayuda de CodeIgniterGestionar mis proyectos con ayuda de CodeIgniter
Gestionar mis proyectos con ayuda de CodeIgniter
 
CodeIgniter
CodeIgniterCodeIgniter
CodeIgniter
 
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs Academy
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs AcademyBootCamp Online en DevOps (and SecDevOps) de GeeksHubs Academy
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs Academy
 
BEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA | Introducción a Docker
BEEVA | Introducción a Docker
 
JS Patterns Applied to a Real World Example
JS Patterns Applied to a Real World ExampleJS Patterns Applied to a Real World Example
JS Patterns Applied to a Real World Example
 
Presentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones SegurasPresentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones Seguras
 
Depuración de aplicaciones en visual studio
Depuración de aplicaciones en visual studioDepuración de aplicaciones en visual studio
Depuración de aplicaciones en visual studio
 
Instalacion y configuracion de Android Studio
Instalacion y configuracion de Android StudioInstalacion y configuracion de Android Studio
Instalacion y configuracion de Android Studio
 
administracion de sistemas de informacion
administracion de sistemas de informacionadministracion de sistemas de informacion
administracion de sistemas de informacion
 
Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2
 
Pipelines as code with Drone
Pipelines as code with DronePipelines as code with Drone
Pipelines as code with Drone
 
Continuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudioContinuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudio
 
Continuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudioContinuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudio
 
Desarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyDesarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademy
 
Herramientas de programación para desarrolladores
Herramientas de programación para desarrolladoresHerramientas de programación para desarrolladores
Herramientas de programación para desarrolladores
 
DockerCon 2022 Spanish Room-ONBOARDING.pdf
DockerCon 2022 Spanish Room-ONBOARDING.pdfDockerCon 2022 Spanish Room-ONBOARDING.pdf
DockerCon 2022 Spanish Room-ONBOARDING.pdf
 
Probando aplicaciones AngularJS
Probando aplicaciones AngularJSProbando aplicaciones AngularJS
Probando aplicaciones AngularJS
 
Automatice el proceso de entrega con CI/CD en AWS
Automatice el proceso de entrega con CI/CD en AWSAutomatice el proceso de entrega con CI/CD en AWS
Automatice el proceso de entrega con CI/CD en AWS
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOps
 
ASP.NET 5 - DotNetters
ASP.NET 5 - DotNettersASP.NET 5 - DotNetters
ASP.NET 5 - DotNetters
 

Último

KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 

Último (20)

KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 

Construir y probar Drupal con Grunt

  • 1. Drupal Grunt Task Construir y probar Drupal usando Grunt Drupal Camp Costa Rica 2015
  • 2. Quien Soy? Daniel Noyola Correo: d.noyola@paralleldevs.com Github: danielnv18 Twitter: @danielnv18 Full Stack Developer
  • 4. Desarrollo en Drupal Enfoque: 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
  • 5. Porque Contruir Drupal? 1. Drush make 2. 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.
  • 6. 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.
  • 7. Surgen Preguntas 1. 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?
  • 9. 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.
  • 10. Grunt, Genial! Tutorial en escribir un script en Grunt minificar JavaScript usando la herramienta "uglify" http://gruntjs.com/getting-started
  • 12. Drupal Grunt Task https://github.com/phase2/grunt-drupal-tasks grunt-drupal-task es un conjunto de herramientas que nos ayudan construir y probar (aka Testear) Drupal y otras herramientas comunes en Drupal
  • 13. Tiene opiniones 1. 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.
  • 14. Reúne una serie de herramientas
  • 15. Se queda fuera de tu camino 1. Todas las tareas se pueden modificar. 2. Administra sus propias dependencias. 3. Las herramientas son faciles de usar.
  • 17. Dependencias Antes de comenzar tenemos que estar seguros que tenemos node.js (npm) Se recomienda para soportar el resto de herramientas Bundler, Composer, Ruby y RubyGems Opcional npm install -g generator-gadget grunt-cli yo yo gadget
  • 22.
  • 24. Objetivos 1. 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
  • 26. Construccion del projecto Utilizamos grunt para construir el projecto: grunt
  • 27. Pasos de contruccion Compass / Bundle Valida Codigo Drush make Inserta el codigo custom en el sitio Compilar el Tema
  • 31. SymLinks? 1. No hay necesidada de re-contruir despues de un cambio en el codigo 2. La tarea "build" se encarga de que los Symlink esten correctos 3. Los link son relativos a la aplicacion 4. XDebug funciona con simlinks 5. Usuarios de windows: CUIDADO!
  • 32. Se ejecuta automatico Ejecuta "validate", compila el tema, drush make (si es necesario) cuando un archivo es modificado. grunt watch
  • 33. La forma de construccion 1. 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.
  • 34. Haslo a tu manera Las tareas de contruccion puede ser ejecutadas individualmente. Demosle un vistaso a las tareas predefinidas.
  • 36. Validando la calidad del codigo 1. Utiliza lints y analisis de codigo estatico para cuantificar la calidad del codigo 2. Podemos ejecutar PHP Lint y PHP Code Sniffer (con los estandares de codigo de Drupal) grunt validate
  • 37. PHP Lint Verifica la sintaxis con la herramienta integrada en php.
  • 38. PHP Code Sniffer Verifica el estilo del codigo para que conicida con Drupal Code Standards
  • 39. Verifiquemos antes de hacer algo 1. 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.
  • 41. Herramientas Front-end 1. Compass fue una de la primeras herramientas no-PHP comun en la implementacion de Drupal 2. Puedes configurar GDT para definir la compilacion de los temas grunt compile-theme
  • 42. Compass Incluya el archivo Gemfile para instalar y para requerir gemas Compass compile es ejecutado durante la construccion del sitio grunt compass
  • 43. Grunt-to-Grunt Delegar tareas a los temas que estan basados en grunt. WIP (Work in progress)
  • 45. Probando los "features" del sitio Probar de Behat, Extenciones Drupal y otras dependencias Probar el sitio con Behat requiere que Drupal este instalado y accesible por URL 2 opciones para ejecutar pruebas localmente Usando un ambiente local (Docker,VM, W/MAMP) Usando el servidor integrado en PHP/Drush grunt drush:liteinstall
  • 47. Hacia BDD GDT suporta el fujo de trabajo de BDD/TDD Primero se escriben las pruebas Codido interactua con el feedback de la prueba Se puede automatizar mediante la tarea watch Incluye herramientas y scripts de prueba para comenzar a probar
  • 49. Deployment Esta hecho para desarrollo local y ambientes de integracion Prepara el codigo para el lanzamamiento Entrega el codigo a otras herramientas de deployment
  • 50. Empaquetamiento Produce una version aislada, desplegable con Drupal Excluye herramientas de soporte y configuracion grunt package
  • 51. Liberando el codigo Se 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)
  • 53. Configuracion Opciones configurable en Gruntconfig.json La fuente y directorio de contruccion Opciones para ejecutar behat Argumentos a la ejecucion de Drush Make Opciones para la configuracion de los temas Incluir / Excluir archivos para el empaquetamiento
  • 54. Extendiendo La entension es posible a travez de cambios en Gruntfile.js Agregar nuevas tareas, reemplazar existentes Ejecutar un comando de consola como una tarea Sobre escribir los pasos por defecto para la construccion del sitio
  • 56. Pruebalo Intenta usar Drupal Grunt Task en tu siguiente projecto Creat issue en GitHub para compartir como deberia funcionar mejor Parches son bienvenidos (a.k.a Pull Request en GitHub)
  • 57. Roadmap 1. Suportar mas herramientas de calidad de codigo (PHPunit Sass/js lint) 2. Delegar para temas que hacen uso de grunt 3. Mas opciones de releasing/deployment 4. Contruir Drupal con composer 5. Integracion con Drupal Console
  • 58. Preguntas? Codigo Usado para la presentacion https://github.com/danielnv18/gdt-drupalcamp-cr-2015 Presentacion