SlideShare una empresa de Scribd logo
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 Drupal grunt task - Drupal Camp CR 2015

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 Drupal grunt task - Drupal Camp CR 2015 (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

Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.sofiasonder
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaFernando Villares
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfEmilio Casbas
 
Licencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de SoftwareLicencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de SoftwareAndres Avila
 
herramientas informaticas mas utilizadas
herramientas informaticas mas utilizadasherramientas informaticas mas utilizadas
herramientas informaticas mas utilizadaspqeilyn0827
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusraquelariza02
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfcj3806354
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respetocdraco
 
Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.saravalentinat22
 
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...Kevin Serna
 
lenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometrialenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometriasofiasonder
 
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Luis Fernando Uribe Villamil
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
 
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docxPRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docxencinasm992
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024DanielErazoMedina
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxLeidyfuentes19
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiegoCampos433849
 
Alan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentaciónAlan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentaciónJuanPrez962115
 
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docxwerito139410
 

Último (20)

Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
 
Licencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de SoftwareLicencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de Software
 
herramientas informaticas mas utilizadas
herramientas informaticas mas utilizadasherramientas informaticas mas utilizadas
herramientas informaticas mas utilizadas
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
 
Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.
 
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
 
lenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometrialenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometria
 
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docxPRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
 
Alan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentaciónAlan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentación
 
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
 

Drupal grunt task - Drupal Camp CR 2015

  • 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