Chalk для JavaScript (Node.js): полное руководство с примерами

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Что такое Chalk и зачем он нужен?

Chalk — это одна из самых популярных библиотек для Node.js, предназначенная для стилизации вывода в терминале (консоли). Если вы когда-нибудь писали console.log() и хотели, чтобы текст был цветным, жирным, подчёркнутым или мигающим — Chalk решает эту задачу элегантно и просто.

Зачем это нужно? В реальных проектах цветной вывод помогает:

  • Визуально разделять логи (ошибки красным, предупреждения жёлтым, успех зелёным).
  • Улучшать UX CLI-утилит и скриптов.
  • Акцентировать внимание на важных сообщениях.
  • Делать вывод более читаемым в длинных логах.

Chalk не использует зависимости, работает быстро и поддерживает цепочки вызовов (chaining). Он автоматически определяет, поддерживает ли терминал цвета, и при необходимости отключает стилизацию (например, при перенаправлении вывода в файл).

Установка

Chalk распространяется через npm. Установите его в свой проект:

npm install chalk

Если вы используете yarn:

yarn add chalk

После установки импортируйте библиотеку в свой скрипт:

const chalk = require('chalk');

Для проектов, использующих ES-модули (type: "module" в package.json), импорт выглядит так:

import chalk from 'chalk';

Важно: Начиная с версии Chalk 5.0, библиотека стала ESM-only (только для ES-модулей). Если вы используете CommonJS (require), устанавливайте версию 4.x:

npm install chalk@4.1.2

Быстрый старт

Попробуем первый пример. Создайте файл example.js и напишите:

const chalk = require('chalk');

console.log(chalk.blue('Hello, world!'));
console.log(chalk.red.bold('Ошибка!'));
console.log(chalk.green.underline('Успех'));
console.log(chalk.yellow.bgBlue('Жёлтый текст на синем фоне'));

Запустите:

node example.js

Вы увидите цветной вывод. Если цвета не отображаются, проверьте, поддерживает ли ваш терминал ANSI-цвета (современные терминалы поддерживают).

Основные методы и функции

Chalk предоставляет два типа API: методы-модификаторы (стили текста) и методы-цвета (цвет текста и фона). Все они могут комбинироваться через цепочки вызовов.

1. chalk.red() — красный цвет текста

Что делает: Окрашивает текст в красный цвет. Чаще всего используется для сообщений об ошибках.

Параметры: Принимает строку или несколько строк (через запятую, объединит их).

console.log(chalk.red('Ошибка: файл не найден'));
console.log(chalk.red('Критическая', 'ошибка', 'системы')); // объединит через пробел

2. chalk.green() — зелёный цвет текста

Что делает: Окрашивает текст в зелёный цвет. Используется для сообщений об успехе.

Параметры: Аналогично red.

console.log(chalk.green('Операция выполнена успешно'));
console.log(chalk.green('✓', 'Готово'));

3. chalk.blue() — синий цвет текста

Что делает: Окрашивает текст в синий цвет. Часто используется для информационных сообщений.

Параметры: Строка или несколько строк.

console.log(chalk.blue('Информация: версия 2.0.1'));

4. chalk.yellow() — жёлтый цвет текста

Что делает: Окрашивает текст в жёлтый цвет. Традиционно используется для предупреждений.

Параметры: Строка или несколько строк.

console.log(chalk.yellow('Предупреждение: низкий заряд батареи'));

5. chalk.bold() — жирный текст

Что делает: Делает текст жирным (bold). Можно комбинировать с цветами.

Параметры: Строка.

console.log(chalk.bold('Этот текст будет жирным'));
console.log(chalk.red.bold('Жирная ошибка')); // комбинация с цветом

6. chalk.underline() — подчёркнутый текст

Что делает: Подчёркивает текст.

Параметры: Строка.

console.log(chalk.underline('Подчёркнутый текст'));
console.log(chalk.blue.underline('Синий подчёркнутый текст'));

7. chalk.bgRed() — красный фон

Что делает: Устанавливает красный цвет фона для текста.

Параметры: Строка.

console.log(chalk.bgRed('Текст на красном фоне'));
console.log(chalk.bgRed.white('Белый текст на красном фоне')); // комбинация

8. chalk.bgGreen() — зелёный фон

Что делает: Устанавливает зелёный цвет фона.

Параметры: Строка.

console.log(chalk.bgGreen('Текст на зелёном фоне'));

9. chalk.italic() — курсив

Что делает: Делает текст курсивным. Работает не во всех терминалах.

Параметры: Строка.

console.log(chalk.italic('Курсивный текст (может не поддерживаться)'));

10. chalk.dim() — тусклый текст

Что делает: Делает текст менее ярким (dim). Полезно для второстепенной информации.

Параметры: Строка.

console.log(chalk.dim('Этот текст будет тусклым'));
console.log(chalk.gray.dim('Серый тусклый текст'));

11. chalk.strikethrough() — зачёркнутый текст

Что делает: Перечёркивает текст.

Параметры: Строка.

console.log(chalk.strikethrough('Этот текст зачёркнут'));

12. chalk.hex() — произвольный HEX-цвет

Что делает: Позволяет задать любой цвет через HEX-код. Очень гибкая функция.

Параметры: Строка — HEX-код цвета (например, '#FF5733').

console.log(chalk.hex('#FF5733')('Оранжевый текст'));
console.log(chalk.hex('#8E44AD').bold('Фиолетовый жирный текст'));

13. chalk.rgb() — произвольный RGB-цвет

Что делает: Задаёт цвет текста через RGB-компоненты.

Параметры: Три числа: r, g, b (от 0 до 255).

console.log(chalk.rgb(255, 87, 51)('Текст цвета rgb(255, 87, 51)'));
console.log(chalk.rgb(100, 200, 50).underline('Зеленоватый подчёркнутый текст'));

14. chalk.bgHex() и chalk.bgRgb() — произвольный цвет фона

Что делает: Аналогично hex и rgb, но для фона.

Параметры: Для bgHex — строка HEX, для bgRgb — три числа.

console.log(chalk.bgHex('#FFC300')('Жёлтый фон'));
console.log(chalk.bgRgb(50, 50, 200).white('Белый текст на синем фоне'));

Реальный практический пример

Представим, что мы пишем CLI-утилиту для проверки здоровья сервера. Создадим файл health-check.js:

const chalk = require('chalk');

function checkService(name, isOk) {
    const status = isOk 
        ? chalk.green.bold('✓ ONLINE') 
        : chalk.red.bold('✗ OFFLINE');
    console.log(`${chalk.blue(name)}: ${status}`);
}

function printHeader() {
    console.log(chalk.bold.underline('Health Check Report'));
    console.log(chalk.dim(new Date().toLocaleString()));
    console.log(chalk.gray('─'.repeat(40)));
}

function printSummary(okCount, total) {
    const percent = Math.round((okCount / total) * 100);
    let color;
    if (percent === 100) color = chalk.green;
    else if (percent >= 70) color = chalk.yellow;
    else color = chalk.red;
    
    console.log(chalk.gray('─'.repeat(40)));
    console.log(color.bold(`Итого: ${okCount}/${total} сервисов работают (${percent}%)`));
}

// Использование
printHeader();

checkService('Web Server', true);
checkService('Database', true);
checkService('Cache', false);
checkService('Queue', true);

printSummary(3, 4);

Запустите: node health-check.js. Вы увидите красивый отформатированный отчёт с цветами и статусами.

Советы и типичные ошибки

Советы:

  1. Используйте цепочки вызовов: chalk.red.bold.underline('текст') — это удобно и читаемо.
  2. Создавайте свои пресеты: Если вы часто используете одну комбинацию, сохраните её в переменную:
    const error = chalk.bold.red;
    const success = chalk.green.underline;
    console.log(error('Ошибка!'));
    console.log(success('Готово!'));
  3. Проверяйте поддержку цвета: Chalk автоматически отключает цвета, если вывод перенаправляется в файл. Но вы можете принудительно включить: chalk.level = 1 (уровни: 0 — нет цвета, 1 — 16 цветов, 2 — 256 цветов, 3 — true color).
  4. Используйте chalk.inverse(): Этот метод меняет местами цвет текста и фона.
  5. Для больших проектов: Рассмотрите библиотеки-обёртки, например kleur (быстрее) или colors (проще, но устарела).

Типичные ошибки:

  1. Забыли установить Chalk: Error: Cannot find module 'chalk' — проверьте package.json.
  2. Использование ES-импорта в CommonJS: Если вы используете import chalk from 'chalk' без "type": "module" в package.json, получите ошибку. Либо переключитесь на модули, либо использу

Рекомендаций