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 maneras ú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 usado es console.log()
, el cual imprime la cadena que le pasas a la consola. Si pasas un objeto, lo representará 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 solamente - %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 usada).
Contando elementos
console.count()
es un método práctico. Toma este código:
const x = 1;
const y = 2;
const z = 3;
console.count('El valor de x es '+x+' y ha sido comprobado..¿cuántas veces?');
console.count('El valor de x es'+x+'y ha sido comprobado..¿cuántas veces?');
console.count('El valor de y es'+y+'y ha sido comprobado..¿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 junto a ella:
Puedes simplemente contar manzanas y naranjas:
const naranjas = ['naranja', 'naranja'];
const manzanas = ['solo una manzana'];
naranjas.forEach(fruta => console.count(fruta));
manzanas.forEach(fruta => console.count(fruta));
Resetear el conteo
El método console.countReset()
resetea el contador usado con console.count()
.
Usaremos el ejemplo de manzanas y naranjas para demostrarlo.
const naranjas = ['naranja', 'naranja'];
const manzanas = ['solo una manzana'];
naranjas.forEach(fruta => console.count(fruta));
manzanas.forEach(fruta => console.count(fruta));
console.countReset('naranja');
naranjas.forEach(fruta => console.count(fruta));
Imprimir el rastreo de pila
Puede haber casos en los que sea útil imprimir el rastreo de la pila de llamadas de una función, quizás para responder a la pregunta de cómo llegó a esa parte del código.
Puede 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 probamos 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
Puede calcular fácilmente cuánto tiempo tarda una función en ejecutarse, usando time()
y timeEnd()
.
const doSomething = () => console.log('test');
const measureDoingSomething = () => {
console.time('doSomething()');
// hacer algo, y medir el tiempo que tarda
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 salida estándar, o stdout.
console.error
imprime en la secuencia stderr.
No aparecerá en la consola, pero sí aparecerá en el registro de errores.
Colorear la salida
Puede colorear la salida de su 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!');
Puede probar eso en el REPL de Node.js, e imprimirá hi! en amarillo.
Sin embargo, esta es la forma de bajo nivel de hacerlo. La forma más sencilla de colorear la salida de la consola es usando una biblioteca. Chalk es una de esas bibliotecas, y además de colorear, también ayuda con otras funciones de estilo, como poner el texto en negrita, cursiva o subrayado.
Lo instala con npm install chalk
, luego puede usarlo:
const chalk = require('chalk');
console.log(chalk.yellow('hi!'));
Usar chalk.yellow
es mucho más conveniente que intentar recordar los códigos de escape, y el código es mucho más legible.
Consulte el enlace del proyecto publicado anteriormente 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);