extractTrigger
Извлекает первый useEffect(() => { ... }, []) в компоненте в выделенный файл *.trigger.ts. Исходный компонент переписывается так, чтобы зажигать новое событие вместо инлайн-исполнения эффекта. Поставляется как программный API (extractTrigger({ ... })) и как CLI (triggery-codemod extract-trigger).
Это прагматичный V1 — он работает с типовой формой одного useEffect с понятным телом побочного эффекта. Сложные эффекты (cleanup-функции, несколько эффектов в одном файле, динамические deps) требуют ручной доводки; codemod останавливается на первом матче и отчитывается о сделанном.
Сигнатура
Заголовок раздела «Сигнатура»Параметры
Заголовок раздела «Параметры»| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
file | string | да | Путь к исходнику .tsx (или .ts). |
name | string | да | Id триггера в kebab-case. Используется для вывода имени символа (newMessageTrigger) и имени файла (new-message.trigger.ts). |
outDir | string | нет | Директория для сгенерированного файла триггера. По умолчанию — директория исходника. |
dryRun | boolean | нет | Спланировать изменения и вернуть их без записи на диск. |
project | ts-morph.Project | нет | Предсуществующий project. Позволяет CLI переиспользовать один tsconfig между батчами. |
Возвращает
Заголовок раздела «Возвращает»| Поле | Тип | Описание |
|---|---|---|
sourceUpdated | boolean | Был ли переписан исходный файл. |
triggerFilePath | string | Абсолютный путь сгенерированного файла *.trigger.ts. |
triggerFileContent | string | Содержимое нового файла триггера. |
originalEffectBody | string | Извлечённое тело без отступов. |
| Флаг | Обязательный | Описание |
|---|---|---|
--name | да | Id триггера в kebab-case. |
--out-dir | нет | Переопределить дефолтную выходную директорию. |
--dry-run | нет | Распечатать запланированные изменения без записи. |
CLI печатает сгенерированный путь и однострочную подсказку с import, который нужно добавить в файл компонента (codemod намеренно не правит импорты — держит AST-изменения минимальными и предсказуемыми).
Примеры
Заголовок раздела «Примеры»Программно — dry run
Заголовок раздела «Программно — dry run»Программно — запись в выделенную папку триггеров
Заголовок раздела «Программно — запись в выделенную папку триггеров»Вывод:
Что генерируется
Заголовок раздела «Что генерируется»Сгенерированный файл — это стартер: codemod не может вывести surface “events / conditions / actions” рантайма без твоего ввода. Он выдаёт void-payload событие и Record<string, never> для conditions/actions; схему ты заполняешь руками.