BetaДокументация для beta‑теста, возможны ошибки и неточности.
Перейти к содержимому

feod-structure/large-files ​

Размер файлов и реестр планируемого разбиения.

Выключено в recommended и strict. Включается настройками проекта. Autofix отсутствует. Поддерживается ESLint и Oxlint.

Зачем нужно ​

Позволяет постепенно разбивать большие файлы. Превышение лимита требует либо разбиения, либо явной записи с текущим потолком и планом. Реестр не разрешает дальнейший рост незаметно.

Примеры ​

При пороге 400 строк:

Ошибка ​

text
src/modules/User/model.ts — 620 строк, записи в реестре нет

Ошибка также возникает, если зарегистрирован потолок 620, а файл вырос до 621.

Корректно ​

text
src/modules/User/model.ts — 350 строк, запись не требуется

Временно корректен и файл на 620 строк с записью ниже: потолок равен текущему числу строк, задан план разбиения.

Настройка ​

js
createConfig({
  extra: {
    largeFiles: {
      thresholds: { default: 400, '.vue': 500 },
      files: {
        'src/modules/User/model.ts': {
          ceiling: 620,
          plan: 'Вынести расчёт прав в отдельный файл',
        },
      },
    },
  },
});
Поле extra.largeFilesПо умолчаниюНазначение
thresholds.default400Порог для расширений без отдельной настройки
thresholds['.vue'] и другие расширенияОбщий порогЛимит по последнему расширению
files{}Реестр путей от корня проекта в POSIX-формате
files[path].ceilingОбязательноеТекущее разрешённое число строк
files[path].planОбязательноеНепустой план разбиения

Прямые options: largeFiles вместо extra.largeFiles, группа пути. Реестр files конкретного корня заменяет унаследованный целиком.

Как обновлять реестр ​

Файл сократился с 620 до 580 строк — обновите потолок, сохранив план:

js
'src/modules/User/model.ts': {
  ceiling: 620, 
  ceiling: 580, 
  plan: 'Вынести расчёт прав в отдельный файл',
}

Если файл сократился, снизьте ceiling до текущего размера. Если он вернулся в обычный порог, удалите запись. Удаление файла также требует удаления записи. Просто поставить большой потолок «на будущее» нельзя: несовпадение с меньшим текущим размером тоже диагностируется.

В текущей реализации счётчик равен числу символов \n в исходном тексте; комментарии и пустые строки не исключаются. Для файла без завершающего перевода строки последняя строка отдельно не прибавляется. Это не метрика сложности. Проверяются посещённые файлы, а устаревшие записи реестра обнаруживаются отдельно. Для отчёта доступны largeFilesRows и renderLargeFilesMarkdown; пример — в конфигурации.

Реализация ​

Исходный код · Тесты · Все правила