Saída para a linha de comando usando Node.js
Saída básica usando o módulo console O Node.js fornece um módulo console que oferece muitas maneiras úteis de interagir com a linha de comando. É basicamente o mesmo objeto console que você encontra no navegador.
O método mais básico e mais usado é console.log()
, que imprime a string que você passa para ele no console. Se você passar um objeto, ele o renderizará como uma string.
Você pode passar várias variáveis para console.log
, por exemplo:
const x = 'x';
const y = 'y';
console.log(x, y);
Também podemos formatar frases bonitas passando variáveis e um especificador de formato. Por exemplo:
console.log('Meu %s tem %d orelhas', 'gato', 2);
- %s formata uma variável como uma string - %d formata uma variável como um número - %i formata uma variável apenas como sua parte inteira - %o formata uma variável como um objeto Exemplo:
console.log('%o', Number);
Limpar o console
console.clear()
limpa o console (o comportamento pode depender do console usado).
Contando elementos
console.count()
é um método prático. Veja este código:
const x = 1;
const y = 2;
const z = 3;
console.count('O valor de x é '+x+' e foi verificado..quantas vezes?');
console.count('O valor de x é'+x+'e foi verificado..quantas vezes?');
console.count('O valor de y é'+y+'e foi verificado..quantas vezes?');
O que acontece é que console.count()
contará o número de vezes que uma string é impressa e imprimirá a contagem ao lado dela:
Você pode simplesmente contar laranjas e maçãs:
const laranjas = ['laranja', 'laranja'];
const maçãs = ['apenas uma maçã'];
laranjas.forEach(fruta => console.count(fruta));
maçãs.forEach(fruta => console.count(fruta));
Redefinir a contagem
O método console.countReset()
redefinirá o contador usado com console.count()
.
Usaremos o exemplo de maçãs e laranjas para demonstrar isso.
const laranjas = ['laranja', 'laranja'];
const maçãs = ['apenas uma maçã'];
laranjas.forEach(fruta => console.count(fruta));
maçãs.forEach(fruta => console.count(fruta));
console.countReset('laranja');
laranjas.forEach(fruta => console.count(fruta));
Imprimir o rastro da pilha
Pode haver casos em que seja útil imprimir o rastro da pilha de chamadas de uma função, talvez para responder à pergunta de como você chegou a essa parte do código?
Você pode fazer isso usando console.trace()
:
const function2 = () => console.trace();
const function1 = () => function2();
function1();
Isso imprimirá o rastro da pilha. Isso é o que é impresso se tentarmos isso no REPL do 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 o tempo gasto
Você pode calcular facilmente quanto tempo uma função leva para ser executada, usando time()
e timeEnd()
.
const doSomething = () => console.log('test');
const measureDoingSomething = () => {
console.time('doSomething()');
// faça algo e meça o tempo que leva
doSomething();
console.timeEnd('doSomething()');
};
measureDoingSomething();
stdout e stderr
Como vimos, console.log
é ótimo para imprimir mensagens no Console. Isso é o que é chamado de saída padrão, ou stdout.
console.error
imprime para o fluxo stderr.
Não aparecerá no console, mas aparecerá no log de erros.
Colorir a saída
Você pode colorir a saída do seu texto no console usando sequências de escape. Uma sequência de escape é um conjunto de caracteres que identifica uma cor.
Exemplo:
console.log('x1b[33ms/x1b[0m', 'hi!');
Você pode tentar isso no REPL do Node.js, e ele imprimirá hi! em amarelo.
No entanto, esta é a maneira de baixo nível de fazer isso. A maneira mais simples de colorir a saída do console é usar uma biblioteca. Chalk é uma dessas bibliotecas e, além de colorir, também ajuda com outras facilidades de estilo, como tornar o texto em negrito, itálico ou sublinhado.
Você o instala com npm install chalk
, então você pode usá-lo:
const chalk = require('chalk');
console.log(chalk.yellow('hi!'));
Usar chalk.yellow
é muito mais conveniente do que tentar lembrar os códigos de escape, e o código é muito mais legível.
Verifique o link do projeto postado acima para mais exemplos de uso.
Criar uma barra de progresso
progress
é um pacote incrível para criar uma barra de progresso no console. Instale-o usando npm install progress
.
Este trecho cria uma barra de progresso de 10 etapas, e a cada 100ms uma etapa é concluída. Quando a barra é concluída, limpamos o intervalo:
const ProgressBar = require('progress');
const bar = new ProgressBar(':bar', { total: 10 });
const timer = setInterval(() => {
bar.tick();
if (bar.complete) {
clearInterval(timer);
}
}, 100);