feod-structure/large-files
Размер файлов и реестр планируемого разбиения.
Выключено в recommended и strict. Включается настройками проекта. Autofix отсутствует. Поддерживается ESLint и Oxlint.
Зачем нужно
Позволяет постепенно разбивать большие файлы. Превышение лимита требует либо разбиения, либо явной записи с текущим потолком и планом. Реестр не разрешает дальнейший рост незаметно.
Примеры
При пороге 400 строк:
Ошибка
src/modules/User/model.ts — 620 строк, записи в реестре нетОшибка также возникает, если зарегистрирован потолок 620, а файл вырос до 621.
Корректно
src/modules/User/model.ts — 350 строк, запись не требуетсяВременно корректен и файл на 620 строк с записью ниже: потолок равен текущему числу строк, задан план разбиения.
Настройка
createConfig({
extra: {
largeFiles: {
thresholds: { default: 400, '.vue': 500 },
files: {
'src/modules/User/model.ts': {
ceiling: 620,
plan: 'Вынести расчёт прав в отдельный файл',
},
},
},
},
});Поле extra.largeFiles | По умолчанию | Назначение |
|---|---|---|
thresholds.default | 400 | Порог для расширений без отдельной настройки |
thresholds['.vue'] и другие расширения | Общий порог | Лимит по последнему расширению |
files | {} | Реестр путей от корня проекта в POSIX-формате |
files[path].ceiling | Обязательное | Текущее разрешённое число строк |
files[path].plan | Обязательное | Непустой план разбиения |
Прямые options: largeFiles вместо extra.largeFiles, группа пути. Реестр files конкретного корня заменяет унаследованный целиком.
Как обновлять реестр
Файл сократился с 620 до 580 строк — обновите потолок, сохранив план:
'src/modules/User/model.ts': {
ceiling: 620,
ceiling: 580,
plan: 'Вынести расчёт прав в отдельный файл',
}Если файл сократился, снизьте ceiling до текущего размера. Если он вернулся в обычный порог, удалите запись. Удаление файла также требует удаления записи. Просто поставить большой потолок «на будущее» нельзя: несовпадение с меньшим текущим размером тоже диагностируется.
В текущей реализации счётчик равен числу символов \n в исходном тексте; комментарии и пустые строки не исключаются. Для файла без завершающего перевода строки последняя строка отдельно не прибавляется. Это не метрика сложности. Проверяются посещённые файлы, а устаревшие записи реестра обнаруживаются отдельно. Для отчёта доступны largeFilesRows и renderLargeFilesMarkdown; пример — в конфигурации.