Форматтер compact в ESLint представляет собой специализированный способ вывода результатов линтинга в максимально сжатом, однострочном виде. Его основная цель — обеспечить удобочитаемость логов в средах, где критичны плотность информации и возможность быстрой фильтрации: CI/CD системы, терминальные пайплайны, лог-агрегаторы, системы мониторинга.
В отличие от человеко-ориентированных форматтеров (например, stylish или default), compact устраняет структурные блоки и многострочные сообщения, заменяя их линейной структурой с фиксированными полями.
Каждое сообщение об ошибке или предупреждении выводится в одну строку и включает следующие компоненты:
<путь к файлу>:<строка>:<колонка>: <уровень>: <сообщение> <правило>
Пример:
src/app.js:10:5: error: 'x' is defined but never used no-unused-vars
Путь к файлу
Строка и колонка
line:columnУровень
error — нарушение, приводящее к ошибке линтингаwarning — предупреждение, не блокирующее процессСообщение
Имя правила
no-unused-vars)Формат compact оптимизирован под сценарии, где важны:
В системах непрерывной интеграции вывод ESLint часто используется как часть логов сборки. Compact-формат позволяет:
Пример использования в pipeline:
eslint . -f compact
В больших проектах с тысячами файлов компактный формат снижает визуальный шум. Каждая ошибка занимает ровно одну строку, что облегчает grep-фильтрацию:
src/utils.js:25:12: warning: Unexpected console statement no-console
Compact формат часто используется как промежуточный слой для:
Stylish формат ориентирован на читаемость человеком и использует группировку по файлам:
/src/app.js
10:5 error 'x' is defined but never used no-unused-vars
Недостатки по сравнению с compact:
JSON формат предназначен для программной обработки:
[
{
"filePath": "src/app.js",
"messages": [
{
"ruleId": "no-unused-vars",
"message": "'x' is defined but never used",
"line": 10,
"column": 5,
"severity": 2
}
]
}
]
Недостатки по сравнению с compact:
Compact занимает промежуточное положение:
src/index.js:3:1: error: Parsing error: Unexpected token import no-undef
src/index.js:15:8: warning: Unexpected console statement no-console
Если в файле несколько проблем, каждая выводится отдельной строкой:
src/app.js:5:10: error: 'a' is defined but never used no-unused-vars
src/app.js:8:5: warning: Missing semicolon semi
src/app.js:12:1: error: Unexpected console statement no-console
Порядок вывода:
ESLint поддерживает выбор форматтера через флаг -f или
--format:
eslint src -f compact
Также возможно перенаправление вывода:
eslint src -f compact > eslint.log
или использование в связке с фильтрацией:
eslint src -f compact | grep error
Внутренне ESLint классифицирует нарушения как:
Compact формат отображает это как текстовые метки:
warningerrorПример:
utils/math.js:22:3: error: 'sum' is not defined no-undef
utils/math.js:30:7: warning: Unexpected any usage @typescript-eslint/no-explicit-any
Пути могут быть:
src/components/button.js:14:2: error: Missing return type
/Users/dev/project/src/components/button.js:14:2: error: Missing return type
В кроссплатформенных средах используются /, даже на
Windows, если не изменено поведение CLI.
Compact формат легко обрабатывается регулярными выражениями:
^(.*?):(\d+):(\d+):\s(error|warning):\s(.*?)\s([a-zA-Z0-9-_/]+)$
Поля можно извлечь как:
Это делает формат удобным для:
В отличие от JSON, compact не содержит вложенной структуры, что усложняет:
Сообщение не включает:
Добавление новых полей требует изменения формата строки, что может нарушить обратную совместимость.
При тысячах сообщений compact формат может создавать длинные потоки текста:
src/a.js:1:1: error: ...
src/a.js:2:5: warning: ...
src/a.js:10:3: error: ...
...
Для оптимизации часто комбинируется с:
Compact формат часто используется вместе с:
eslint . -f compact | grep no-unused-vars
eslint . -f compact | awk -F: '{print $1}'
В монорепозиториях compact формат позволяет:
Пример вывода:
packages/ui/button.js:45:2: error: 'props' is missing validation react/prop-types
packages/api/index.js:10:8: warning: Unexpected console statement no-console
packages/core/utils.js:88:1: error: 'fetchData' is not defined no-undef
Compact формат является компромиссом между:
Он занимает нишу транспортного формата логов, а не визуального отчета, и особенно эффективен в автоматизированных средах обработки кода.