Joan León PRO
⚡️ Web Performance Consultant | Speaker | Staff Frontend Engineer at @AdevintaSpain | @GoogleDevExpert in #WebPerf | @cloudinary Ambassador
@nucliweb
joanleon.dev
youtube.com/c/JoanLeon
Joan
León
@nucliweb
#bilbostack20
Joan
León
@nucliweb
#bilbostack20
Joan
León
@nucliweb
#bilbostack20
Joan
León
@nucliweb
#bilbostack20
Joan
León
@nucliweb
#bilbostack20
Joan
León
@nucliweb
#bilbostack20
Joan
León
@nucliweb
#bilbostack20
Joan
León
@nucliweb
#bilbostack20
Joan
León
@nucliweb
#bilbostack20
Joan
León
@nucliweb
#bilbostack20
Command
Input
Output
Joan
León
@nucliweb
#bilbostack20
Joan
León
@nucliweb
#bilbostack20
Joan
León
@nucliweb
#bilbostack20
Joan
León
@nucliweb
#bilbostack20
Joan
León
@nucliweb
#bilbostack20
Command
Input
Output
Folders
Joan
León
@nucliweb
#bilbostack20
Folders
Joan
León
@nucliweb
#bilbostack20
Compressors
5.1.0
1.3.2
Joan
León
@nucliweb
#bilbostack20
Compressors
imagemin-cli
Joan
León
@nucliweb
#bilbostack20
Compressors
svgo
Joan
León
@nucliweb
#bilbostack20
Compressors
Updating...
Joan
León
@nucliweb
#bilbostack20
Compressors
Updated
Joan
León
@nucliweb
#bilbostack20
Compressors
Updating
Like a crafter
Joan
León
@nucliweb
#bilbostack20
Compressors
Updating
Like a crafter
Joan
León
@nucliweb
#bilbostack20
Compressors
Updating
Like a crafter
Joan
León
@nucliweb
#bilbostack20
Compressors
Updating
Like a crafter
Joan
León
@nucliweb
#bilbostack20
Compressors
Updating
Like a crafter
const imagemin = require("imagemin");
const imageminMozjpeg = require("imagemin-mozjpeg");
const imageminPngquant = require("imagemin-pngquant");
const imageminSVGO = require("imagemin-svgo");
(async () => {
const files = await imagemin(
["./originals/{*.jpg,*.png,*.svg}"],
{
destination: "./images",
plugins: [
imageminMozjpeg({ quality: 80 }),
imageminPngquant({
strip: true,
quality: [0.75, 0.8]
}),
imageminSVGO({
removeViewBox: false,
removeDimensions: true
})
]
});
console.log("All images optimized!");
console.log("You are rock! 🤘🏼");
})();
Joan
León
@nucliweb
#bilbostack20
Compressors
Updating
Like a crafter
Joan
León
@nucliweb
#bilbostack20
Guidelines
Originals
Joan
León
@nucliweb
#bilbostack20
Guidelines
Originals
Joan
León
@nucliweb
#bilbostack20
Guidelines
Originals
Joan
León
@nucliweb
#bilbostack20
Guidelines
Density
Joan
León
@nucliweb
#bilbostack20
Guidelines
Density
Joan
León
@nucliweb
#bilbostack20
Guidelines
Density
Joan
León
@nucliweb
#bilbostack20
Guidelines
Documentation
Joan
León
@nucliweb
#bilbostack20
Guidelines
Documentation
Joan
León
@nucliweb
#bilbostack20
Guidelines
Documentation
The Structural Similarity
Herramientas para medir las diferencias percibidas entre imágenes
Joan
León
@nucliweb
#bilbostack20
Diffing
Joan
León
@nucliweb
#bilbostack20
Diffing
SSIM
Joan
León
@nucliweb
#bilbostack20
Diffing
SSIM
Joan
León
@nucliweb
#bilbostack20
Image Garbage Colector
Joan
León
@nucliweb
#bilbostack20
Backlog
Joan
León
@nucliweb
#bilbostack20
Joan
León
@nucliweb
#bilbostack20
Joan
León
@nucliweb
#bilbostack20
Joan
León
@nucliweb
#bilbostack20
Joan
León
@nucliweb
#bilbostack20
Joan
León
@nucliweb
#bilbostack20
Joan
León
@nucliweb
#bilbostack20
Joan
León
@nucliweb
#bilbostack20
Joan
León
@nucliweb
#bilbostack20
Joan
León
@nucliweb
#bilbostack20
Joan
León
@nucliweb
#bilbostack20
Joan
León
@nucliweb
#bilbostack20
By Joan León
En muchos proyectos, tenemos una series de recursos que no son dinámicos: imágenes, vídeos, iconos, tipografías o textos i18n. Las imágenes suelen ser las menos cuidadas, desde el punto de vista de la performance. Y lo sé de primera mano, así que os quiero contar cómo pasamos de una carpeta images desplegada en un S3, a un repositorio con unas guidelines de la estructura, naming, automatización de compresión de imágenes y generación de “Responsive Images”, test de regresión visual e incluso un garbage images collector, para hacer limpieza de esas imágenes que quedan en el olvido.