No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Módulos útiles

22/31
Recursos

Aportes 113

Preguntas 9

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

No se pero este hombre le pone una emoción a esto que no puedo explicar, lo mejor es que esa misma emoción siento yo node es demasiado.

La función de cifrado de bcrypt nos permite construir una plataforma de seguridad utilizando contraseñas encriptadas con Salt.

const bcrypt = require("bcrypt");
const password = "NuncaParesDeAprender2020";

bcrypt.hash(password, 5, function(err, hash){
	console.log(hash)
});
// La consola nos entregaria una contraseña distinta en cada oportunidad.

// Para evaluar si una contraseña concuerda con un hash
bcrypt.compare(password, hash, function(error, result){
	console.log(result)
	console.log(error)
})
// Nos va a responder **true** *(en el result)* o **false** *(en el error)* dependiendo si la contraseña puede generar el hash

Moment. js es una librería que nos permite solventar estos problemas e implementa un sistema de manejo de fechas mucho más cómodo.

const moment = require('moment')
const ahora = moment();

// Para formatear una fecha
ahora.format('MM/DD/YYYY HH:MM A'); // 04/11/2020 20:10 PM

// Para validad una fecha
moment('2020-04-11').isValid(); // Nos dara **true** o **false** dependiendo de si la fecha es valida o no

// Para encontrar cuanto tiempo ha pasado hasta hoy
moment('2018-04-11').fromNow(); // Hace 2 años

// Para agregar o eliminar años, días o meses
moment('2020-04-11').add(1, 'years'); // 2021-04-11
moment('2020-04-11').subtract(1, 'years'); // 2019-04-11

Sharp puede convertir imágenes grandes en imágenes JPEG, PNG más pequeñas y compatibles con la web de diferentes dimensiones.

const sharp = require('sharp')

// La siguiente reducira una imagen de 120x120 o cualquier tamaño a 80x80 y lo guardara en una imagen mas pequeña sin eliminr la original.
sharp('imagen.png').resize(80, 80).toFile('imagen_80x80.png');

La dislexia 😂

OJO!!!
Gente NO utilicen moment, es una libreria que se creo hace mucho tiempo y sirvio en su tiempo, ahora hay mejores alternativas, la misma gente de moment te recomiendan usar otras librerias mas modernas

bcrypt y sharp necesitan Python 2.7 para funcionar

Sufriendo en PHP para conseguir una librería que me convirtiera un SVG en PNG
y acá con un npm install sharp y una línea de código ya lo tengo

sharp(‘corona.svg’).png().toFile(‘corona.png’);

console.clear();

const bcrypt = require('bcrypt');

const password = '1234Segura!';

let promise = new Promise(function (resolve, reject) {
    bcrypt.hash(password, 5, function (err, hash) {
        if (err != null) {
            reject(err);
        }
        resolve(hash);
    });
});

promise
    .then((result) => {
        passwordHash = result;
        console.log(result);
        saveToDatabase();
    })
    .catch((err) => {
        console.log(err);
    });

function saveToDatabase() {
    console.log('password saved...');
    console.log(passwordHash);
}

Wow… este a sido uno de los mejores cursos que he tomado, no solo por el profesor y como transmite esa alegria de enseñar, sino tambien por las cosas utiles que aprendes y utilizas dia a dia.

Prefiero usar promises que callbacks, son geniales 😄
bcrypt .hash(password, 2048).then((hash) => { console.log("perfecto, aqui esta el hash ", hash); }) .catch((error) => { console.log("sucedio un error"); });

asi es como podria quedar lo de bcrypt pero con promesas

const bcrypt = require('bcrypt');

const password = '1234Segura!';
let passwordHash

bcrypt.hash(password, 5)
    .then(hash => {
        console.log(hash)
        return hash
    })
    .then(hash => {
        return bcrypt.compare(password, hash)
    })
    .then(res => {
        console.log(res)
    })
    .catch(err => {
        console.log(err)
    })

Módulos útiles

Módulos que utilizaremos frecuentemente en nuestras aplicaciones como:

bycript : Permite encriptar un string generando un hash.

bycript.hash : Genera el hash del string, este método recibe por parámetros el string a encriptar, las veces que debe ejecutarse el script para generar un hash aleatorio y por ultimo una función que se encarga de capturar hash o el error que se presente.

bycript.compare : Permite comprar el hash con el string a encriptado y nos devuelve un true o false. bycript.compare recibe por parámetros el string a encriptado, luego el hash y por ultimo una función que captura la información o el error que se presente.

//importamos el modulo
const bcrypt = require('bcrypt');
//declaramos el pass o palabra a encriptar
const passworld = '1234Segura';
//bcrypt.hash no permite generar un hash
bcrypt.hash(passworld, 10, function(error, hash) {
  console.log(hash);
//bcrypt.compare nos devuelve un boleano si hash y contraseña son iguales
  bcrypt.compare(passworld, hash, function(err, res) {
    console.log(res)
  });
});

moment : Logramos manipular fechas de manera eficiente.
moment.format : Podemos darle un formato adecuado a nuestra fecha.

//importamos el modulo
const moment = require('moment');

let ahora = moment();
//establecemos el formato a usar
let ahoraFormat = ahora.format('HH:mm:ss');


console.log(ahoraFormat);

sharp : Permite trabajar con imágenes

//importamos el modulo
const sharp = require('sharp');
//ruta de la imagen a modificar
sharp('fondo-carro.jpg')
//scalamos la imagen a 500 de alto
  .resize(500)
//otorgamos una escala de grises
  .grayscale()
//generamos el archivo modificado
  .toFile('fondo-carro-small.jpg');

Usando este comando lo pude instalar en linux

npm install --save bcryptjs && npm uninstall --save bcrypt

Y en Windows con el siguiente:

npm install -g node-gyp
npm install --g --production windows-build-tools

Despues:

npm install bcrypt

Cuando utilizo express utilizo npm install bcryptjs

Justo en un momento donde había perdido cierta motivación, la energía de este profesor me ha vuelto a motivar a continuar

😮 Yo despues de esta clase awww cuanto poder

Módulos Útiles

Módulo para trabajar con fechas moment.

El paquete moment se puede instalar por medio de npm de la siguiente forma:

npm i moment

Este módulo permite ampliar las opciones de trabajar con fechas en Node, un ejemplo:

const moment = require('moment')

let now = moment()

console.log(now.format('DD/MM/YYYY - HH:mm'))

// Para validad una fecha
moment('2020-04-11').isValid(); 
// Nos dara **true** o **false** dependiendo de si la fecha es valida o no

// Para encontrar cuanto tiempo ha pasado hasta hoy
moment('2018-04-11').fromNow(); // Hace 2 años

// Para agregar o eliminar años, días o meses
moment('2020-04-11').add(1, 'years'); // 2021-04-11
moment('2020-04-11').subtract(1, 'years'); // 2019-04-11

En este ejemplo, el módulo moment permite obtener la hora y dar el formato que necesite. Además tiene más funciones para calcular los días entre distintas fechas, y mucho más.

Módulo para trabajar con imágenes sharp

Este módulo permite gestionar imágenes. La instalación es la siguiente:

npm i sharp

Permite manipular las imágenes con muchos métodos:

const sharp = require('sharp')

sharp('original.png').resize(80).toFile('resized.png')

En este caso, estamos cambiando el tamaño de la imagen original.png a un tamaño de 80px, y se crea un archivo llamado resized.png .

Más funcionalidades de Sharp

sharp

Módulo para trabajar con cifrado y contraseñas

El paquete se llama bcrypt la instalación se hace con npm de la siguiente forma:

npm i bcrypt

Este módulo permite el cifrado de las contraseñas que son guardadas en una base de datos para no almacenarlas en texto plano.

1. Encriptar la contraseña bcrypt .

Lo primero que debemos hacer es importar el módulo.

const bcrypt = require('bcrypt')

Luego, se debe tener una contraseña para poder ejecutar el método hash que existe en el módulo bcrypt .

const password = '1234Segura!'

bcrypt.hash(password, 5, function (err, hash) {
  console.log(hash)

  bcrypt.compare(password, hash, (err, res) => {
    console.log(res)
  })

})

En el código anterior, se utiliza el método .hash() , el cuál tiene 3 parámetros:

  • password , es la contraseña que va a ser encriptada.
  • 5 , el cuál puede ser cualquier número y hace referencia a la cantidad de veces que va a ser ejecutado el algoritmo de encriptación.
  • function , es una promesa que va a tener la información de la encriptación, tiene dos parámetros, el error y el hash , que es el resultado de la encriptación.

Para poder comparar si una contraseña digitada por un usuario u obtenida e algún sitio concuerda con el hash asignado, se utiliza el método compare , el cual tiene los mismos 3 parámetros y permite recibir un boolean que dice si el hash concuerda con la pass .

wow… node.js es como el python del backend con modulos para todo!!
XD

fechas (‘moment’), imágenes (‘sharp’) y password (‘bcrypt’)

Comparto el ejemplo de Bcrypt con promesas.

Cuando quieran bajar la imagen y no se les guarde en formato .webp. Pongan un signo de pregunta ‘?’ al final del enlace

https://static.platzi.com/media/public/uploads/original_219068e1-0543-480f-9f1b-e0844c5e06d2.png?

Como bien dijo el usuario programadores, para windows funciona bcryptjs: “npm i bcryptjs”, si usamos bcrypt solo no funciona.

Que ondis, vengo del futuro :v, Moment.js ha sido oficialmente deprecado por sus autores en 2020. Algunas alternativas que vale la pena mirar puede ser: * Luxon * Day.js Suerte en su viaje padawans

Importante el manejo de bcrypt

const bcrypt = require('bcrypt');

const password = '1234Segura!';


//tambien funciona con promesas
bcrypt.hash(password, 5, (err, hash) => {
    console.log(hash);

    bcrypt.compare(password, hash, (err, res) => {
        //console.log(err);
        console.log(res);
    })
})

El dolor de cabeza del manejo de fechas, con esta es super.

const moment = require('moment');

let ahora = moment();

console.log(ahora.toString());
console.log(ahora.format('YYYY/MMM/DD - HH:mm'));
console.log(ahora.format('YYYY/MM/DD - HH:mm'));

Definitivamente existe para cada cosa un modulo ya hecho

const sharp = require('sharp');

sharp('gotcha.png')
    .resize(80,80)
    .toFile('resize.png');

sharp('gotcha.png')
    .grayscale()
    .toFile('resize1.png');

sharp('gotcha.png')
    .rotate(90)
    .toFile('resize2.png');    

El “ahora” sale de una la fecha:
Moment<2021-07-23T21:50:52-05:00>

Supongo que por ser versión node mas reciente.

hice una función básica usando sharp y la quiero compartir con ustedes. En principio está sencilla pero permite personalizar aun más los archivos.

const sharp = require('sharp');


function convert(route, size, name) {
    sharp(route)
        .resize(size)
        .toFile(`${name}.png`)
    console.log('El proceso se ha realizado con éxito');
}

convert('./original.png', 100, 'nueva');


¿How to use async await with bcrypt? 👍

const bcrypt = require('bcrypt');

async function hashPassword(pass) {
  return await bcrypt.hash(pass, 5);
}

async function comparePassword(pass1, encrypted) {
  return await bcrypt.compare(pass1, encrypted);
}

async function main() {
  const password = 'pa55w0rd';
  const hashedPassword = await hashPassword(password);
  console.log(hashedPassword);
  const validPassword = await comparePassword(password, hashedPassword);
  console.log(validPassword);
}

main();

Excelente, hay que ver que estos módulos son de los más comúnes pero no son los únicos. Es genial ver la aplicabilidad de cada módulo en ejemplos concretos. Me llamaba mucho la atención NODE, ahora me gusta el doble

a qui un ejemplo de bcrypt con promesas

const bcrypt = require ('bcrypt');

const password = '1234segura!';
const saltRound = 2048;

bcrypt.hash(password, saltRound)
      .then(hash => { 
            console.log("perfecto, aqui esta el hash ", hash); 
            bcrypt.compare(password,hash)
                  .then((result)=>{
                        console.log(result);
                  }).catch(error=>{
                        console.error(error);
                  });
      }).catch(error => { 
            console.error(error); 
      });

Así podrían usar bcrypt con Async/Await, ya que la function .hash() regresa una promesa, se puede manejar con async/await.

const bcrypt = require('bcrypt');

const password = '1234Safe!';

const createHash = async (password) => {
  try {
    const hash = await bcrypt.hash(password, 5);
    console.log(hash);
  } catch(err) {
    console.error(err);
  }

}

createHash(password);

Resumen

Estos son algunos módulos de npm mencionados junto con sus funcionalidades principales:

  1. bcrypt:

    • Funciones de encriptación de contraseñas con sal.

    • bcrypt.hash(): Genera un hash de una contraseña.

    • bcrypt.compare(): Compara una contraseña con su hash correspondiente.

    • Ejemplo:

      const bcrypt = require('bcrypt');
      let password = '1234Segura!';
      
      bcrypt.hash(password, 5)
          .then(result => {
              console.log(result);
              return result;
          })
          .then(result => {
              bcrypt.compare(password, result).then(result => console.log(result));
          })
          .catch(err => console.error(err));
      
  2. moment:

    • Biblioteca para manipulación y formateo de fechas y horas.
    • Cabe recalcar que a día de hoy la librería ya no recibe más soporte y se recomienda usar otras opciones
    • Aquí unas alternativas
  3. sharp:

    • Biblioteca para procesamiento de imágenes.

    • sharp().resize(): Redimensiona una imagen.

    • sharp().grayscale(): Convierte una imagen a escala de grises.

    • sharp().resize().toFile(): Redimensiona y guarda una imagen en un archivo.

    • Ejemplo:

      const sharp = require('sharp');
      sharp('jslogo.png')
          .resize(80)
          .grayscale()
          .toFile('jslogoModified.png')
          .then(info => console.log(info))
          .catch(err => console.error(err));
      
  4. numeral:

    • Biblioteca para formateo de números y valores.

    • numeral.value(’1,000’): Recibe un valor e internamente lo almacena como un int 1000

    • Ejemplo:

      const numeral = require('numeral');
      
      let myNumeral = numeral(1000);
      let myNumeral2 = numeral('1,000');
      
      console.log(myNumeral2.value());
      

Recuerda instalar estos módulos antes de utilizarlos en tu proyecto utilizando el comando npm install nombre-del-modulo.

‘La dislexia’ xDD

Excelentes librerias, todas son maravillosas, al igual que la explicación

++Los comandos para instalar los módulos: ++

npm i bcrypt

npm i moment

npm i sharp

excelentes librerías

/* la libreria moment sirve para trabajar con fechas */

const moment = require('moment');

let ahora = moment();

/* console.log(ahora); */

/* De esta manera podemos ver  la fecha usando moment con el formato que queramos */
console.log(ahora.format('YY/MM/DD'))
/* bcrypt se usa para encriptar contrasenas */

const bcrypt = require('bcrypt');

const password = '1234Segura!';

bcrypt.hash(password, 5, function(err, hash) {
    console.log(hash);
    bcrypt.compare(password, hash, function(err, res) {
        /* console.log(err); */
        console.log(res);
    })
});


/* bcrypt tambien funciona con promesas no solamente con callback */

Muchas veces he visto en los comentarios de platzi comentarios tipo: “Seria bueno que llevarán o explicaran como utilizarlo en el día a día”.
.
Bueno aquí esta esa clase, con información super valiosa y explicada de una manera increíble.

no sé si actualmente moment tenga habilitado el tree shaking y hace que nuestra aplicación pese más, hay una opción que se llama date fns que es lo mismo que moment, pero si cuenta con el tree shaking😁

Usando Bcrypt con promesas :

const bcrypt = require('bcrypt')
const hashPassword = (password) => {
  return new Promise ((resolve, reject) => {
    bcrypt.hash(password, 5, (err, hash) => {
      err ? reject(err) : resolve(hash)
    })
  })
}

let password = 'daniela123'
hashPassword(password).then(data => console.log(data)) 

Para el M1 genera error, como si el archivo no se encontrara. Según documentación aun no hay soporte 😭.

11:10 justo estaba escuchando una música de suspenso xd

La dislexia🤣

Debería de existir un curso solo de esto !!! 😃 genial la clase

wooow sharp es genial, no tenía conocimiento de ella!!

dayjs es mas liviano que moment y hacen tecnicamente los mismo

Si tienen algún problema al hacer npm i byript recomiendo que usen el paquete bycriptjs, se instala haciendo npm i bycriptjs

Puse un 90 por error y se me crasheo la maquina jajajajajajaa

NODE sin este profesor no es lo mismo, ciento que le dieron el curso perfecto al profesor que le mete mucho respeto al don de educar, gracias Carlos Hernandez

La liberia moment ya la han dejado de desarrollar, es recomendable dejar de usarla

¿Se puede hacer un modulo que importe modulos?

Aquí les dejo la versión con async await:
.

.
PD: esa sintaxis al rededor de la función asincrona es una forma de ejercutar la función al mismo tiempo que es declarada 😁💚

bcrypt - utilidades para encriptar
moment - Trabajar con fechas
sharp - tratamiento de imágenes

excelente librerias importante conocerlas.

Excelente clase para aprender lo básico de algunos módulos que nos puede servir de forma cotidiana en nuestro proyecto.

Quienes vieron el detalle con el nombre del archivo?

Me agrada bastante la forma en que explica Carlos. Excelente profe.

Muy muy interesante!

si instalo uan depedencia como sharp dentro de un init de npm este solo funciona para ese modulo o es global para otros proyectos???

require(‘sharp’): sirve para transformar imagenes

require(‘moment’): sirve para manipular agilmente fechas

++npm init -y++: permite obviar las preguntas de instalación

Necesidad frecuentes en node:

trabajar las fechas
trabajar con imagenes
trabajar contraseñas

Creo que a esta y todas las clases de este profesor les hizo falta un boton de like porque son demasiado buenas y bien explicadas, sabe alguien si tiene mas clases el?

Excelente clase!!!

//  Modulos utiles

// Estos modulos son buenos para encriptar, la "hora" y sharp que nos permine modificar archivos.

// Bycript
const bcrypt = require('bcrypt');

const password = '1234Security';

bcrypt.hash(password, 5, function(err, hash) {
    console.log(hash)

    bcrypt.compare(password, hash, function(err, res) {
        console.log(res)
    })
})

// Moment
const moment = require('moment');

let ahora = moment();

// console.log(ahora.toString());
console.log(ahora.format('YYYY/MM/DD - HH:mm'));

// Sharp

const sharp = require('sharp')

sharp('original.png')
    .resize(80)
    .grayscale()
    .toFile('resized.png')

npm i bcrypt no funciona, sale un error de que se necesita phyton para usarlo.

In love with Sharp

Excelentes librerías.

Qué MARAVILLOSA CLASE 😄 !!!

const sharp = require('sharp')

sharp('imagen1.png')
    .resize(80)
    .toFile('resized.png')

¡excelente clase!

Este curso es lo mejor que existe

La dislxia! genio!!!

Para los que actualmente les sale un error con sharp.js

const sharp = require('sharp')

sharp('./original_219068e1-0543-480f-9f1b-e0844c5e06d2.png')
    .resize(80)
    .grayscale() 
    .toFile('./resized.png')

Grandes herramientas!

Excelente clase!

ATENCIÓN:
El compañero @andresmotiva compartió el siguiente código:

const bcrypt = require("bcrypt");
const password = "NuncaParesDeAprender2020";

bcrypt.hash(password, 5, function(err, hash){
	console.log(hash)
});
// La consola nos entregaria una contraseña distinta en cada oportunidad.

// Para evaluar si una contraseña concuerda con un hash
bcrypt.compare(password, hash, function(error, result){
	console.log(result)
	console.log(error)
})
// Nos va a responder **true** *(en el result)* o **false** *(en el error)* dependiendo si la contraseña puede generar el hash

Si por la razón que sea en la línea donde esté

bcrypt.compare(password, hash, ...

les dice que hash está indefinido -como me pasó a mí- y quieren ver el resultado del compare rápidamente, les recomiendo intentar colocar bcrypt.compare dentro de bcrypt.hash. Adicionalmente, revisando la documentación a día de hoy 10 de diciembre de 2022 dentro de npm, sugieren utilizar genSalt. Les dejo el código tal y como lo tengo yo:

const bcrypt = require("bcrypt");
const password = "NuncaParesDeAprender2020";

const saltRounds = 10;
//const someOtherPlaintextPassword = 'not_bacon';
//pueden usar esta constante para hacer un bcrypt.compare, como sugieren en la documentación.
var Elhash;
bcrypt.genSalt(saltRounds, function (err, salt) {
    bcrypt.hash(password, salt, function (err, hash) {
     
        if (err) {
            console.error(err);
        }
        console.log(hash);
        bcrypt.compare(password, hash, function (err, result) {
    
           
            console.log(`El resultado: ${result}, el error: ${err}`);
        });
        
    });
});




Es fascinante cuando se equivoca y la manera en cómo lo resuelve.
**MÓDULOS ÚTILES** * **BCRYPT** *Es una **biblioteca** **utilizada** para el **hashing** de **contraseñas**, **proporcionando** una manera **segura** y **robusta** de **almacenar** y **verificar** **contraseñas** en **aplicaciones**.* **bcrypt** ***aplica** un **algoritmo** de **hashing** **basado** en* **Blowfish** *que **incluye** un **factor** de **costo**, lo que permite **ajustar** la **dificultad** de la **operación** de **hashing** para **contrarrestar** el **aumento** en el **poder** de **cómputo** con el **tiempo**. Este **enfoque** **ayuda** a **proteger** las **contraseñas contra ataques** de **fuerza** **bruta**.* * **MOMENT** *Es una **biblioteca** para la **manipulación** y **formateo** de **fechas** y **horas**. **Ofrece** una **interfaz** **sencilla** e **intuitiva** para **realizar** **operaciones** **complejas** con **fechas**, como la **validación**, **comparación** y **manipulación** de **tiempos** en **diferentes** **formatos**. **facilita** **tareas** **comunes** como el **cálculo** de **diferencias entre fechas**, la **adición** o **sustracción** de **tiempo**, y la **conversión entre zonas horarias**, **proporcionando** una **gran** **flexibilidad** y **precisión**.* * **SHARP** *Es una **biblioteca** de **alto** **rendimiento** para el **procesamiento** de **imágenes**. **Diseñada** para ser **rápida** y **eficiente**. La cual permite **realizar** una **variedad** de **operaciones** de **manipulación** de **imágenes**, como **redimensionar**, **recortar**, **rotar**, **cambiar** el **formato** y **aplicar** **efectos**, t**odo sin necesidad** de **cargar** la **imagen** **completa** en la **memoria**, lo que **mejora** **significativamente** el **rendimiento**. Es **compatible** con **muchos** **formatos** de **imagen** **comunes**, **incluidos*** **JPEG***,* **PNG***,* **WebP** *y* **TIFF***.*
excelente curso y y gran manera del profe, explicar

Bcryp con ES6 y utilizando async/await

Para los que no les funciona el Sharp, en caso era la ruta que no la encontraba, y mi solución fue poner su ubicación relativa:

const sharp = require('sharp');

try {
    sharp('paquetes/utiles/magen.png')
        .resize(80)
        .grayscale()
        .toFile('paquetes/utiles/resized.png', (err, info) => {
          if (err) {
            console.error('Error al procesar la imagen:', err);
          } else {
            console.log('Imagen procesada exitosamente:', info);
          }
        });
  } catch (error) {
    console.error('Error general:', error);
  }

dando este resultado para verificar:

 Imagen procesada exitosamente: {
  format: 'png',
  width: 80,
  height: 80,
  channels: 3,
  premultiplied: false,
  size: 1267
}
Carlos la i! jajaja
**NO USAR MOMENT.** En su lugar usar otra libreria de fechas, moment ya fue puesta como una version legacy que recibira mantenimiento durante un tiempo, pero luego sera totalmente abandonada 😭 ![](</home/jose/Imágenes/Capturas de pantalla/no-usar-moment.png>)

Mucho cuidado con las funciones síncronas que sean pesadas ya que pueden bloquear el hilo principal de nodejs y congelar el servidor. Si las funciones u operaciones son pesadas (que no son instantáneas), lo recomendable sería manejarlas de forma asíncronas.

Todos viendo “orginal” 😳

La password mas seguro que he visto !!!

Estos conceptos han sido de muya ayuda la verdad!!

bcrypt

const bcrypt = require('bcrypt')

const password = '1234segura!'

bcrypt.hash(password, 5, (err, hash) => {
    console.log(hash)

    bcrypt.compare(password, hash, (err, res) => {
        //console.log(err)
        console.log(res)
    })
})

moment

const moment = require('moment');

let ahora = moment()

//console.log(ahora.toString())

console.log(ahora.format('YYYY/MM/DD - HH:mm'))

sharp

const sharp = require('sharp');

sharp('original.png')
    .resize()
    .grayscale()
    .toFile('resized.png');

me estan re gustando estas claseeees

La mejor clase sin ninguna duda 😃

Amé el módulo sharp 😍.
Adiós photoshop para web development!

Cabe mencionar que Sharp
puede ser usado con Callbacks, Promesas o Async/Await

Muy excelentes recursos los que enseñan en esta clase

excelentes recursos, soy nuevo en node, y ahora voy viendo la utilidad de esta gran herramienta

Interesantes libraries, aunque tuvo qlgunos updates.

sharp, me encantó !

Este video es de mucha utilidad!

Como acotacion a la clase, en las ultimas versiones de node, en la carpeta node_modules, no viene ya por defecto el modulo sharp asi que se debe instalar con “npm i sharp” O “npm install sharp”, como mejor les funcione, feliz dia coders