util.styleText în Node.js

Criptografie și utilitare Node.js 20.12 / 21.7 (stabil din 22.13 / 23.5)

Colorează și formatează textul afișat în terminal (roșu, verde, bold, subliniat) fără pachete ca chalk.

Sintaxă
import { styleText } from "node:util";
styleText(format, text, [{ validateStream, stream }])
styleText(["bold", "red"], "Eroare")

Ce face util.styleText

styleText(format, text) întoarce textul înconjurat de codurile ANSI care îl colorează în terminal. format este un nume ("red", "green", "bold", "underline", "bgYellow", "gray") sau un tablou de nume combinate. Lista completă este în util.inspect.colors.

Implicit, funcția verifică dacă ieșirea este un terminal care afișează culori (opțiunea validateStream: true, cu stream implicit process.stdout) și ține cont de variabilele NO_COLOR, NODE_DISABLE_COLORS și FORCE_COLOR. Dacă ieșirea merge într-un fișier sau printr-un pipe, primești textul simplu, fără coduri.

Cu validateStream: false codurile sunt adăugate mereu. Din Node.js 26.1 sunt acceptate și culori hexazecimale ("#ff8800").

Parametri

Parametru Descriere
format Un format sau un tablou de formate.
text Textul de formatat.
opțiuni.validateStream Implicit true: adaugă culori doar dacă stream le acceptă.
opțiuni.stream Stream-ul verificat (implicit process.stdout).

Ce returnează

Un șir, cu sau fără coduri ANSI.

Exemple

Exemplul 1: Mesaje colorate în terminal

Rulat într-un terminal, rândurile apar colorate. Aici ieșirea este capturată (nu este terminal), deci textul vine fără coduri.

import { styleText } from "node:util";

console.log(styleText("green", "✔ Comanda 1024 a fost trimisă"));
console.log(styleText(["bold", "red"], "✖ Stoc epuizat: mere"));
console.log(styleText("gray", "Ultima sincronizare: Iași"));

Rezultat

✔ Comanda 1024 a fost trimisă
✖ Stoc epuizat: mere
Ultima sincronizare: Iași

Exemplul 2: Codurile ANSI din spatele culorilor

Cu validateStream: false codurile sunt adăugate mereu. JSON.stringify le face vizibile.

import { styleText } from "node:util";

const text = styleText(["bold", "red"], "Eroare", { validateStream: false });
console.log(JSON.stringify(text));
console.log(text.length, "caractere pentru 6 litere");

Rezultat

"\u001b[1m\u001b[31mEroare\u001b[39m\u001b[22m"
25 caractere pentru 6 litere

Greșeli frecvente

  • Construiești coduri ANSI de mână ("\x1b[31m") și uiți să le închizi: tot textul de după rămâne roșu. styleText pune și codul de închidere.
  • Scrii culori în jurnale salvate în fișiere cu validateStream: false: fișierul se umple de coduri. Lasă valoarea implicită.
  • Dai un nume greșit ("verde", "grey" în versiuni vechi): primești ERR_INVALID_ARG_VALUE. Verifică lista în util.inspect.colors.

Comenzi înrudite

  • util.inspect / util.format: Transformă orice valoare în text lizibil, ca console.log (inspect), și formatează șiruri cu %s, %d, %o (format).
  • util.parseArgs: Citește opțiunile din linia de comandă (–port 8080, -v, –fara-culori) fără pachete ca yargs sau commander.
  • process.env: Obiectul cu variabilele de mediu ale procesului: configurări ca PORT, NODE_ENV sau chei de API, mereu ca șiruri.