Перейти к содержимому
GitHubXDiscord

@triggery/vite

Плагин Vite, который автоматически находит каждый *.trigger.ts в проекте и регистрирует его при старте приложения. Один импорт virtual:triggery-registry в точке входа — и все триггеры активны, без ручной развязки импортов. С поддержкой HMR: правка триггера перезапускает createTrigger(...), добавление или переименование файлов инвалидирует виртуальный модуль.

npm bundle

pnpm add -D @triggery/vite

Peer-зависимости: vite ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0.

ЭкспортНазначение
triggery(options?) (default)Vite-плагин. Возвращает Plugin, который добавляется в массив plugins.
virtual:triggery-registryВиртуальный модуль с побочным эффектом — импортирует все подходящие файлы.
vite.config.ts
import { defineConfig } from 'vite';
import triggery from '@triggery/vite';

export default defineConfig({
  plugins: [triggery({ glob: 'src/**/*.trigger.ts' })],
});
src/main.tsx
import 'virtual:triggery-registry';

// ...rest of your bootstrap

Это вся настройка. Каждый файл, соответствующий glob-паттерну, автоматически импортируется — и его top-level вызов createTrigger(...) регистрируется в дефолтном рантайме.

ОпцияПо умолчаниюОписание
glob'src/**/*.trigger.{ts,tsx,js,jsx}'Один паттерн или массив. Всё, что принимает tinyglobby.
  • Правка существующего файла триггера просто перезапускает его createTrigger(...) — в рантайме срабатывает правило «last-mount-wins» и заменяет старую регистрацию. В коде приложения никаких специальных действий не нужно.
  • Добавление / удаление / переименование файла триггера инвалидирует виртуальный модуль, чтобы список импортов перестроился на следующем запросе.

Добавь одну ambient-декларацию, чтобы TypeScript знал о виртуальном модуле:

src/vite-env.d.ts
/// <reference types="vite/client" />
declare module 'virtual:triggery-registry';