Salida a la línea de comandos usando Node.js
Salida básica usando el módulo console Node.js proporciona un módulo console
que ofrece muchísimas formas muy útiles de interactuar con la línea de comandos. Es básicamente el mismo objeto console
que encuentras en el navegador.
El método más básico y más utilizado es console.log()
, que imprime la cadena que le pasas a la consola. Si pasas un objeto, lo renderizará como una cadena.
Puedes pasar múltiples variables a console.log
, por ejemplo:
const x = 'x';
const y = 'y';
console.log(x, y);
También podemos formatear frases bonitas pasando variables y un especificador de formato. Por ejemplo:
console.log('Mi %s tiene %d orejas', 'gato', 2);
- %s formatea una variable como una cadena
- %d formatea una variable como un número
- %i formatea una variable como su parte entera únicamente
- %o formatea una variable como un objeto Ejemplo:
console.log('%o', Number);
Limpiar la consola
console.clear()
limpia la consola (el comportamiento puede depender de la consola utilizada).
Contar elementos
console.count()
es un método útil. Toma este código:
const x = 1;
const y = 2;
const z = 3;
console.count('El valor de x es '+x+' y ha sido verificado... ¿cuántas veces?');
console.count('El valor de x es'+x+'y ha sido verificado... ¿cuántas veces?');
console.count('El valor de y es'+y+'y ha sido verificado... ¿cuántas veces?');
Lo que sucede es que console.count()
contará el número de veces que se imprime una cadena e imprimirá el conteo al lado:
Puedes simplemente contar manzanas y naranjas:
const oranges = ['orange', 'orange'];
const apples = ['just one apple'];
oranges.forEach(fruit => console.count(fruit));
apples.forEach(fruit => console.count(fruit));
Reiniciar el conteo
El método console.countReset()
reinicia el contador utilizado con console.count()
.
Usaremos el ejemplo de manzanas y naranjas para demostrar esto.
const oranges = ['orange', 'orange'];
const apples = ['just one apple'];
oranges.forEach(fruit => console.count(fruit));
apples.forEach(fruit => console.count(fruit));
console.countReset('orange');
oranges.forEach(fruit => console.count(fruit));
Imprimir el rastreo de la pila
Puede haber casos en los que sea útil imprimir el rastreo de la pila de llamadas de una función, tal vez para responder a la pregunta de cómo llegaste a esa parte del código.
Puedes hacerlo usando console.trace()
:
const function2 = () => console.trace();
const function1 = () => function2();
function1();
Esto imprimirá el rastreo de la pila. Esto es lo que se imprime si intentamos esto en el REPL de Node.js:
Trace
at function2 (repl:1:33)
at function1 (rep1:1:25)
at rep1:1:1
at ContextifyScript.Script.xunInThisContext (vm.js:44:33)
at REPLServer.defaultEval(repl.js:239:29)
at bound (domain.js:301:14)
at REPLServer.xunBound [as eval](domain.js:314:12)
at REPLServer.onLine (repl.js:440:10)
at emitone (events.js:120:20)
at REPLServer.emit (events.js:210:7)
Calcular el tiempo empleado
Puedes calcular fácilmente cuánto tiempo tarda en ejecutarse una función, utilizando time()
y timeEnd()
.
const doSomething = () => console.log('test');
const measureDoingSomething = () => {
console.time('doSomething()');
// do something, and measure the time it takes
doSomething();
console.timeEnd('doSomething()');
};
measureDoingSomething();
stdout y stderr
Como vimos, console.log
es excelente para imprimir mensajes en la consola. Esto es lo que se llama la salida estándar, o stdout.
console.error
imprime en el flujo stderr.
No aparecerá en la consola, pero aparecerá en el registro de errores.
Colorear la salida
Puedes colorear la salida de tu texto en la consola usando secuencias de escape. Una secuencia de escape es un conjunto de caracteres que identifica un color.
Ejemplo:
console.log('x1b[33ms/x1b[0m', 'hi!');
Puedes probar eso en el REPL de Node.js, e imprimirá ¡hola! en amarillo.
Sin embargo, esta es la forma de bajo nivel de hacer esto. La forma más sencilla de colorear la salida de la consola es usar una librería. Chalk es una de esas librerías, y además de colorear, también ayuda con otras facilidades de estilo, como hacer que el texto sea negrita, cursiva o subrayado.
Se instala con npm install chalk
, luego puedes usarlo:
const chalk = require('chalk');
console.log(chalk.yellow('hi!'));
Usar chalk.yellow
es mucho más conveniente que tratar de recordar los códigos de escape, y el código es mucho más legible.
Consulta el enlace del proyecto publicado arriba para obtener más ejemplos de uso.
Crear una barra de progreso
progress
es un paquete increíble para crear una barra de progreso en la consola. Instálalo usando npm install progress
.
Este fragmento crea una barra de progreso de 10 pasos, y cada 100ms se completa un paso. Cuando la barra se completa, limpiamos el intervalo:
const ProgressBar = require('progress');
const bar = new ProgressBar(':bar', { total: 10 });
const timer = setInterval(() => {
bar.tick();
if (bar.complete) {
clearInterval(timer);
}
}, 100);