Comments 10
Не плохо. Как раз есть определенный запрос в моем проекте на что то подобное. Но задача, реализации мультибрендового проекта. Когда у тебя есть специфичные бренду компоненты и они оверврайтят базовые компоненты проекта.
Спасибо! Очень интересный кейс — поддержка override'ов для мультибрендовых архитектур — действительно востребованная задача.
Мы подумаем над тем, как ввести поддержку брендов прямо в генерацию (например, --brand=BrandA
и соответствующая структура шаблонов). Это может стать классной фичей для версии 1.x+
Если есть конкретный формат, который вам удобен — буду рад обсудить!
Кажется уже есть инструмент решающий туже проблему - plop.js
Да, вы правы — Plop.js решает похожую задачу. Но vite-plugin-create
изначально заточен под проекты на Vite, и поэтому делает некоторые вещи проще «из коробки»:
- Автоматическая генерация конфигурации и шаблонов через init
- Поддержка TypeScript/JavaScript с выбором при установке (Этот пункт не описан в статье, так как это, а так же генерация custom блоков - фитча обновления 1.0.1. По ней статья только пишется)
- Предустановленные генераторы: компонент, страница, store и кастомные (Обновление 1.0.1)
- Гибкая настройка нейминга (PascalCase, camelCase и т.д.)
- Простая структура конфигурации без кода (JSON + Handlebars)
Plop — мощный и гибкий, но требует больше ручной настройки. Мы хотим, чтобы наш инструмент был полезен из коробки, особенно для Vite-разработчиков.
Будем рады фидбеку, особенно если вы пробовали Plop и знаете, чего в нём не хватало 😉
Вроде бы существует plop из пакета npm, как отдельный пакет конечно, но функционал у него довольно хорош.
Да, Plop.js — действительно мощный инструмент генерации, и мы вдохновлялись им в процессе.
Главное отличие vite-plugin-create — фокус на простоту, zero-config старт и интеграцию с Vite.
В ближайших версиях планирую добавить интерфейс для генерации конфига и шаблонов (например, через CLI или веб). Хочется, чтобы всё было максимально прозрачно и удобно — даже для тех, кто раньше не использовал генераторы.
А в чем отличие от сниппетов? В том, что может создаваться несколько файлов за действие?
Да, одна из ключевых фич — это генерация нескольких файлов за одно действие (например, Component.tsx, index.ts, style.module.scss, test.tsx), что невозможно сделать обычным сниппетом.
Но есть и другие важные отличия:
🧱 Полноценная структура: сниппет работает внутри файла. vite-plugin-create создаёт папку, все нужные файлы и заполняет их из шаблонов.
🧠 Гибкость: шаблоны лежат в проекте и настраиваются через конфиг. Можно сделать свои генераторы (page, store, hook, и т.д.).
🤝 Один источник правды: в отличие от сниппетов, которые настраиваются отдельно в каждой IDE, шаблоны живут прямо в репозитории и одинаковы для всей команды.
💻 Не завязано на локальную машину: шаблоны не хранятся в профиле IDE или в настройках пользователя. Это часть проекта. Всё под контролем Git, CI/CD и командной среды.
Я, например, работаю и в WebStorm, и в VS Code, а проектов с разной структурой — много. И вместо того чтобы везде держать копии сниппетов, проще использовать один универсальный инструмент.
Так что vite-plugin-create — это скорее не альтернатива сниппетам, а следующий уровень автоматизации
Если вы делаете похожим на нест, то могли заметить, что создаваемые вещи сразу подставляются куда-то еще в зависимости. Так какой смысл от вашей тулзы, если она допустим не сможет добавить в редакс новый созданный слайс (или что там добавляют обычно в главный файл)?
Создавать несколько файлов - круто, но не знаю..
Хороший поинт, спасибо!
Сейчас vite-plugin-create — это генератор файловой структуры. Он решает другую задачу: убрать рутину при создании сущностей, упростить масштабируемость, особенно в мультипроектных и командных средах. То есть — scaffold, а не интеграция.
Но ты прав: автоматическое подключение (например, добавление слайса в Redux или новой страницы в роутер) — это сильное улучшение, и я как раз думаю о расширении плагина в эту сторону.
Идея такая: при init плагин может спрашивать, какой стейт-менеджер используется (например, Redux, Zustand) — и предлагать указать файл слайсов, корневой стор или маршрутов. А дальше — делать вставку нужного импорта или вызова. Всё конфигурируемо, чтобы не было магии.
Если у тебя есть примеры таких кейсов или конкретные хотелки — буду рад, если поделишься. Можно даже завести issue, чтобы не потерять 👍
А что если бы у Vite был свой nest g? Теперь есть