Usando Sass y Gulp para el desarrollo de temas en WordPress

WordCamp Barcelona - 2018
@nuriarai
para empezar un nuevo proyecto a medida de forma rápida y eficiente

para no repetirnos, ser más eficientes y centrarnos en el trabajo creativo
AUTOMATIZAR
DRY

- compilación preprocesadores CSS
- autoprefijos CSS
- minificación de CSS y JS
- detección errores JS (js lint)
- compresión imágenes
....
EFICIENCIA DURANTE EL DESARROLLO

- autorecarga de la página
- navegación sincronizada entre dispositivos



MAMP PRO
Local by FlyWheel
MAMP + hosts

docker

Vagrant

entorno de desarrollo local

ServerPress
webpack




node
gulp
npm

yarn

parcel

herramientas front-end







codekit
koala
css preprocessors

gulp
css frameworks





Bootstrap
Foundation
Bulma
UIKit
Materialize

mis elecciones



MAMP PRO
Local by FlyWheel




node
gulp
npm
elige lo que mejor te funcione a ti, no hay una fórmula que sea la mejor para tod@s!
Starter themes

- Underscores
- FoundationPress
- HTML Blank
Bones
- Sage
- Tonik
- Understrap
Empezar

instalar:
- node (desde su web)
- npm (actualizar desde el terminal)
- gulp (desde el terminal)
inicializar:
- npm
La primera vez
Siguientes proyectos
- configurar (cambiar proxy)
instalar el tema
- npm install
Verificar e instalar

instalar npm:
npm -v
ver versión instalada
npm install npm@latest -g
instalar última (si es anterior a 6.4.1) de forma global (-g)
instalar gulp:
npm install --global gulp-cli
instalar última versión de gulp de forma global (-g)
Crear tema


Vamos a underscores.me y generamos el tema
En este ejemplo no lo "sassificamos" pero también podriáis hacerlo
Activar tema




Inicializar proyecto

npm init
crear package.json
npm i --save-dev gulp@3.9.1
instalar gulp como dependencia (versión 3.9.1)
git init
inicializar git
empieza la fiesta
package.json


gulpfile.js


creamos el fichero gulpfile con estas líneas de código
.gitignore

creamos el fichero gitignore con instrucciones básicas

ejecutando gulp

ahora ya podemos lanzar el comando gulp que lanzará la tarea por defecto y ejecutará el código

sassificando el tema (I)

- creamos carpeta assets y subcarpetas: css/sass
- copiamos contenido de style.css a nuevo fichero sass/main.scss
- dejamos sólo cabecera en style.css

sassificando el tema (II)

npm i --save-dev gulp-sass
instalar sass compiler
npm i --save-dev gulp-autoprefixer
instalar autoprefixer
inicializar source-maps
npm i --save-dev gulp-sourcemaps
sassificando el tema (III)


sassificando el tema (IV)


modificamos el fichero gulpfile añadiendo los nuevos módulos y creando una tarea llamada styles que de momento sólo compila y añade prefijos
sassificando el tema (V)

Ahora, si lanzamos la tarea 'gulp styles' nos compilará y creará el fichero main.css

Modificar functions.php incluyendo el enqueue de main.css

viendo los resultados

Modificamos main.scss


Obtenemos main.css
sigue la fiesta

diferenciamos las tareas de desarrollo de las de producción


gulpfile.js

inicializar browsersync:

TAREAS DESARROLLO (I)
gulpfile.js

TAREAS DESARROLLO (II)

gulpfile.js

TAREAS DESARROLLO (III)

tarea default en watch
gulpfile.js

TAREAS PRODUCCION (I)

gulpfile.js

TAREAS PRODUCCION (II)

gulpfile.js

TAREAS PRODUCCION (III)

gulpfile.js

TAREAS PRODUCCION (IV)

Organización tema

wp-content/themes/wcbcn2018

tras la inicialización tenemos nuevo:
- carpeta node_modules
- gulpfile.js
- package.json
Oganización tema (II)

- creamos carpeta resources y ponemos todo el contenido original del tema
- dejamos en la raíz los nuevos ficheros y la carpeta node_modules
- creamos carpeta assets/images
- movemos carpeta js a assets/js
- modificamos functions.php con nuevas rutas
- dividimos sass en carpetas
- importamos ficheros en main.scss
- creamos carpeta dist en raiz, ahí irán los ficheros compilados, concatenados y minificados
Reorganizamos el contenido:

Oganización tema (III)



tras gulp dev:styles
tras gulp prod:

functions.php
en functions.php (after_setup) creamos constantes globales con los dirs correspondientes según el entorno:


functions.php (II)
en functions.php hacemos enqueue condicional segun el entorno:


añadir assets
en cualquier fichero php donde queramos insertar una imágen o cualquier otro asset lo enlazamos con la constante ASSETSDIR para que sepa cuál debe ir a buscar en función del entorno:

a tener en cuenta

- gulp 4.0
- webpack
gracias

WordCamp Barcelona - 2018
@nuriarai
https://github.com/nuriarai/gulp-talkWP-boilerplate.git
Todos los ficheros en git:
Speed your development workflow
By Núria Ramoneda Aiguadé
Speed your development workflow
- 1,354