Aguarde...

18 de abril de 2023

Log colorido simples no Node.js

Log colorido simples no Node.js

Ao escrever scripts Node.js, muitas vezes desejo enviar informações para o console em cores diferentes. Normalmente, é para chamar a atenção do usuário e sinalizar sucesso ou erro.

Eu poderia buscar uma biblioteca testada em batalha como Chalk, mas geralmente não preciso de todos os seus recursos. Em vez disso, tenho um pequeno script que copio de projeto para projeto:

const reset = "\x1b[0m";

const log = {
  green: (text) => console.log("\x1b[32m" + text + reset),
  red: (text) => console.log("\x1b[31m" + text + reset),
  blue: (text) => console.log("\x1b[34m" + text + reset),
  yellow: (text) => console.log("\x1b[34m" + text + reset),
};

Então, posso facilmente registrar as coisas em cores:

log.green("This seems like a very successful message");
log.red("Something might have gone wrong");
log.blue("I'm here to inform you of something");
log.yellow("Lemon 🍋");

Depois de executado, fica assim:

Log colorido simples no Node.js

Como funciona

O script usa algo chamado códigos de escape ANSI. É uma maneira de dar comandos a um terminal passando sequências de bytes, geralmente começando com um caractere de escape ASCII \x1b. Eles são usados ​​principalmente para mover o cursor e alterar a cor ou o estilo do texto. Eles são padronizados e devem funcionar em qualquer plataforma.

Por exemplo, \x1b[31mé uma sequência de escape que diz ao nosso terminal para mudar a cor para vermelho. Todo o texto depois dele ficará vermelho, até passarmos pela sequência de redefinição\x1b[0m , que reverterá o texto para a cor padrão.

Versão mais robusta

Se você precisar de mais recursos, sugiro usar uma biblioteca existente. Eu geralmente recomendo escolher um desses dois:

  • picocolors – quando preciso de uma biblioteca mais robusta, mas ainda leve
  • Chalk – quando preciso de uma biblioteca de colorir com todos os recursos

Mas, para aprender, adicionei mais alguns recursos e copiei o código para o CodeSandbox. Esta versão permite passar vários parâmetros, mantém a coloração nativa dos objetos e expõe um paintmétodo que colore apenas partes da string.

Log colorido simples no Node.js

Navegador

Como bônus, vamos ver como podemos usar cores no console de um navegador. As sequências de escape não vão funcionar, mas podemos usar CSS .

console.log(
  "%c🍋 Lemon",
  "background: black; color: yellow;"
);

Tudo depois %cserá estilizado usando CSS definido no parâmetro depois dele.

Postado em BlogTags:
Escreva um comentário