Свой чекер
Чекер — это класс, который наследуется от BaseChecker и проверяет уже стабилизированное состояние проекта. Чекеры запускаются после того, как плагины завершили генерацию, cleanup, запись файлов и все каскадные итерации.
check
import fs from 'node:fs';
import path from 'node:path';
import { BaseChecker, type TypeCheckerCheckArgs } from '@arfa-tools/generator';
export class CheckerReadme extends BaseChecker {
name = 'readme';
check({ rootDir, checkerError }: TypeCheckerCheckArgs): void {
const readmePath = path.resolve(rootDir, 'README.md');
if (fs.existsSync(readmePath)) return;
checkerError({
message: 'README.md is required',
error: new Error(`File not found: ${readmePath}`),
});
}
}ts | Корневая директория, переданная в |
ts | Список уникальных путей файлов, добавленных или изменённых пользователем в watch-режиме либо записанных генератором за все итерации текущего запуска, за исключением удаленных файлов |
ts | Список уникальных путей файлов, удалённых пользователем в watch-режиме либо генератором при cleanup за все итерации текущего запуска |
ts |
|
ts | Функция для регистрации информационных сообщений |
ts | Функция для регистрации ошибок |
Регистрация ошибок
Если чекер может найти несколько независимых нарушений, лучше вызвать checkerError для каждого из них и не бросать исключение, чтобы в логах сохранился весь список.
throw можно использовать для инфраструктурных сбоев: ошибки чтения, невозможность запустить внешний инструмент и т.п. FileGenerator перехватит исключение и добавит его в общий результат как ошибку чекера, которая не блокирует следующий чекер или метод afterCheckers.