В стандартном режиме сборщик формирует единый поток логов,
управляемый глобальной настройкой logLevel. Это удобно для
общего контроля вывода, но недостаточно гибко, когда требуется тонко
регулировать поведение отдельных типов сообщений: часть предупреждений
может быть критичной в одном проекте и полностью шумовой в другом.
Опция logOverride вводит механизм точечной переоценки
уровня логирования для конкретных сообщений. Она работает поверх
глобального logLevel и позволяет переопределять поведение
отдельных категорий логов без изменения общей конфигурации сборки.
Система логов в esbuild устроена иерархически:
logLevel)logOverride вмешивается на последнем уровне,
перезаписывая поведение отдельных типов сообщений.
Если глобально задано:
logLevel: "warning"
то по умолчанию:
Но при этом logOverride может включить или выключить
конкретные предупреждения независимо от этого правила.
Опция задаётся как объект, где ключ — тип сообщения, а значение — уровень логирования.
logOverride: {
"this-is-a-message-type": "silent",
"another-message-type": "error",
"some-warning-type": "info"
}
Допустимые значения уровней:
silent — полностью скрыть сообщениеinfo — показать как информационноеwarning — показать как предупреждениеerror — интерпретировать как ошибкуКаждое сообщение в esbuild имеет внутренний идентификатор (message kind). Он определяет источник и смысл сообщения.
Примеры категорий, которые могут встречаться:
Эти идентификаторы стабильны в рамках major-версий, что позволяет
использовать logOverride как инструмент долгосрочной
настройки поведения сборки.
Поведение определяется следующим порядком:
logOverride для типа
сообщенияlogLevelЭто означает, что logOverride всегда имеет более высокий
приоритет.
Пример:
{
logLevel: "warning",
logOverride: {
"package.json": "silent"
}
}
Даже если сообщение относится к предупреждениям, оно будет скрыто.
В монорепозиториях часто встречаются повторяющиеся предупреждения о пакетных конфигурациях.
logOverride: {
"package.json": "silent"
}
Такой подход снижает визуальный шум без отключения всех предупреждений целиком.
Иногда информационные сообщения важно поднять до уровня предупреждений.
logOverride: {
"unsupported-bare-import": "warning"
}
Это полезно при постепенной миграции старого кода.
Для строгих CI-сборок часть предупреждений переводится в ошибки:
logOverride: {
"css-syntax-error": "error"
}
Такой режим позволяет остановить сборку при появлении некорректных CSS-вставок.
Некоторые сообщения носят исключительно информационный характер и не влияют на результат сборки:
logOverride: {
"metafile-generated": "silent"
}
Используется для уменьшения объёма логов в автоматизированных системах.
В сборочных системах logOverride становится инструментом
управления сигналами качества кода.
Типичные стратегии:
errorsilentinfoПример строгой конфигурации:
{
logLevel: "warning",
logOverride: {
"unused-variable": "error",
"deprecated-api": "error",
"css-syntax-error": "error"
}
}
Такой подход превращает часть предупреждений в формальные блокирующие условия.
logLevel задаёт базовую политику вывода. Без
logOverride он определяет всё поведение логов.
Ограничивает количество сообщений. Даже при активном
logOverride сообщения могут быть обрезаны по
количеству.
Некоторые сообщения, связанные с metafile, могут
переопределяться через logOverride, но не влияют на
структуру самого файла метаданных.
В крупных приложениях на esbuild количество предупреждений может расти нелинейно. Основная проблема — деградация сигнала: полезные сообщения теряются в потоке второстепенных.
logOverride решает эту проблему за счёт:
export default {
logLevel: "warning",
logOverride: {
"package.json": "silent"
}
}
export default {
logLevel: "info",
logOverride: {
"unused-import": "error",
"missing-export": "error",
"css-syntax-error": "error"
}
}
export default {
logLevel: "error",
logOverride: {
"bundle-size": "silent",
"rebuild": "silent"
}
}
onEnd/onStart callbackslogOverride фактически превращает систему логов в
настраиваемую матрицу приоритетов, где каждый тип сообщения получает
собственный уровень важности. Это позволяет адаптировать поведение
сборщика под разные контексты: разработка, тестирование, CI,
production-сборка.