Skip to content

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:

javascript
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:

javascript
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:
javascript
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:

javascript
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:

javascript
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.

javascript
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():

javascript
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:

bash
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().

javascript
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:

javascript
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:

javascript
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:

javascript
const ProgressBar = require('progress');
const bar = new ProgressBar(':bar', { total: 10 });
const timer = setInterval(() => {
    bar.tick();
    if (bar.complete) {
        clearInterval(timer);
    }
}, 100);