Хуки коммитов
Используйте vp hooks для управления диспетчером Git-хуков, vp config — для настройки проекта (хуки + интеграция с агентами), а vp staged — для запуска проверок для подготовленных к коммиту файлов.
Обзор
Vite+ поддерживает хуки коммитов и проверки индексированных файлов без использования дополнительных инструментов.
Используйте:
vp hooks enable/disable/statusдля управления сгенерированным диспетчером Git-хуковvp configдля установки диспетчера (если он не отключён) и обновления интеграции с агентамиvp stagedдля запуска проверок над файлами, которые в данный момент находятся в индексе Git
Если вы используете vp create или vp migrate, Vite+ предложит автоматически настроить это для вашего проекта.
Быстрый старт
# Установить или обновить диспетчер
vp hooks enable
# Проверить, что включено в этом клоне
vp hooks status
# Отключить хуки в этом клоне (сохраняется после npm install / prepare)
vp hooks disable
# Снова включить их
vp hooks enableКоманды
vp hooks
Управление диспетчером Git-хуков Vite+ для текущего репозитория:
vp hooks enable
vp hooks enable --hooks-dir .custom-hooks
vp hooks disable
vp hooks status| Команда | Поведение |
|---|---|
enable | Устанавливает или обновляет сгенерированный диспетчер в <hooks-dir>/_ и задаёт core.hooksPath. Сбрасывает предыдущее предпочтение отключения. |
disable | Удаляет диспетчер (сбрасывает core.hooksPath, если он указывает на Vite+, и удаляет <hooks-dir>/_) и сохраняет решение об отключении в локальной конфигурации Git, чтобы vp config / скрипты жизненного цикла не устанавливали его снова. |
status | Показывает предпочтение, значение core.hooksPath, наличие диспетчера и принадлежащие проекту скрипты хуков. |
По умолчанию хуки проекта находятся в .vite-hooks. Используйте --hooks-dir, чтобы указать другой подкаталог. После первого успешного включения путь к каталогу сохраняется в локальной конфигурации Git, поэтому в дальнейшем команды enable / disable / status / vp config в этом клоне используют его автоматически.
status отображает состояние настройки:
not set— в этом клоне не задано предпочтение отключения и ранее не выполнялось включениеenabled— включение было выполнено (или диспетчер в данный момент принадлежит Vite+)disabled (local)— после выполненияvp hooks disable
Проверьте строки Dispatcher и core.hooksPath, чтобы узнать, действительно ли хуки активны.
disable / enable не удаляют принадлежащие проекту скрипты хуков (например, .vite-hooks/pre-commit), блок staged в vite.config.ts или скрипты жизненного цикла, вызывающие vp config.
vp config
Команда vp config настраивает Vite+ для текущего проекта. Она устанавливает сгенерированный диспетчер Git-хуков (если хуки не были отключены с помощью vp hooks disable), а также может выполнять связанные с проектом задачи интеграции, например настройку агентов. По умолчанию используется каталог .vite-hooks, либо последний каталог, указанный при выполнении vp hooks / vp config в этом клоне:
vp config
vp config --hooks-dir .vite-hooks
vp config --no-hooks
vp config --no-agentИспользуйте --no-hooks, если хотите, чтобы vp config не изменяла диспетчер Git-хуков. Используйте --no-agent, если хотите, чтобы команда пропустила обновление существующих файлов с инструкциями для ИИ-агентов. Можно передать оба флага одновременно, если нужно, чтобы vp config пропустила оба этапа настройки. После выполнения vp hooks disable команда vp config не устанавливает диспетчер повторно и вместо повторного запроса предлагает использовать vp hooks enable.
Также вы можете установить VP_GIT_HOOKS=0, чтобы отключить установку хуков из сценариев жизненного цикла, таких как prepare или postinstall.
Скрипты хуков, принадлежащие проекту, такие как .vite-hooks/pre-commit, следует добавлять в репозиторий. Сгенерированный диспетчер и вспомогательные файлы в .vite-hooks/_ игнорируются Git и воссоздаются командами vp config или vp hooks enable. Ни одна из этих команд не создаёт и не изменяет принадлежащие проекту скрипты хуков или конфигурацию для подготовленных к коммиту файлов.
vp staged
vp staged выполняет проверки индексируемых файлов, используя конфигурацию staged из vite.config.ts. Чтобы запускать её перед каждым коммитом, добавьте её в принадлежащий проекту pre-commit хук:
vp staged
vp staged --verbose
vp staged --fail-on-changesvp stagedКонфигурация
Определите проверки индексированных файлов в блоке staged файла vite.config.ts:
import { defineConfig } from 'vite-plus';
export default defineConfig({
staged: {
'*.{js,ts,tsx,vue,svelte}': 'vp check --fix',
},
});Это стандартный подход Vite+, который в большинстве проектов должен заменить отдельную конфигурацию lint-staged.
Если при создании проекта через vp create вы включаете использование хуков, Vite+ автоматически создаёт как эту конфигурацию, так и соответствующий pre-commit хук.
При выполнении vp migrate существующая политика хуков сохраняется, а настройки по умолчанию добавляются только в том случае, если ранее не было обнаружено никаких настроек хуков.
Поскольку vp staged считывает конфигурацию из vite.config.ts, проверки индексируемых файлов остаются в одном месте с настройками линтинга, форматирования, тестирования, сборки и запуска задач.
Отключение хуков в определённых окружениях
Установленные хуки при каждом запуске проверяют окружение, поэтому их можно отключить для конкретной машины или процесса, не удаляя их. Это полезно, когда коммиты выполняются вне среды разработки, например через CMS с плоскими файлами (flat file CMS) или другими процессами.
Переменная окружения
Установите VP_GIT_HOOKS=0 в окружении процесса, который выполняет git commit, и все хуки Vite+ будут немедленно завершаться, не выполняя никаких действий:
VP_GIT_HOOKS=0 git commit -m "content update"HUSKY=0 поддерживается аналогичным образом для совместимости с инструментами экосистемы. Установка VP_GIT_HOOKS=0 в окружении также предотвращает повторную установку хуков командой vp config / vp hooks enable, если выполняется сценарий жизненного цикла, такой как prepare.
Скрипт инициализации
Перед проверкой переменной окружения каждый хук подключает скрипт инициализации, если он существует:
$XDG_CONFIG_HOME/vite-plus/hooks-init.sh(по умолчанию~/.config/vite-plus/hooks-init.sh)$XDG_CONFIG_HOME/husky/init.shв качестве резервного варианта
Чтобы отключить хуки для всей машины, создайте скрипт инициализации и экспортируйте в нём переменную:
export VP_GIT_HOOKS=0Поскольку сам хук читает этот файл, всё будет работать даже в том случае, если процесс, выполняющий коммит, не наследует окружение вашей оболочки — например, когда коммиты выполняются демоном или веб-сервером.
Удаление хуков коммитов
Чтобы перестать использовать диспетчер хуков Vite+ в этом клоне (и не допустить его повторной установки через prepare / vp config):
vp hooks disable
# или, если вы использовали пользовательский каталог:
vp hooks disable --hooks-dir .custom-hooksЭто:
- Сбрасывает
core.hooksPath, если он указывает на диспетчер Vite+ - Удаляет сгенерированный каталог
<hooks-dir>/_ - Сохраняет локальное предпочтение отключения, поэтому скрипты жизненного цикла не устанавливают диспетчер повторно, пока вы снова не выполните
vp hooks enable
Чтобы снова включить:
vp hooks enableЕсли вы больше не хотите использовать хуки в проекте вообще (то есть отключить их для всех участников команды), также удалите vp config из сценария prepare или postinstall в package.json.
Эквивалентные действия вручную
Если вы предпочитаете выполнить это вручную:
git config --unset core.hooksPath
rm -rf .vite-hooks/_
# необязательно: запретить повторную установку через prepare/vp config в этом клоне
git config --local vp.hooks.disabled true
# необязательно: сохранённый каталог хуков (задаётся командами enable/disable)
# git config --local vp.hooks.dir .vite-hooksСкрипты, принадлежащие проекту, такие как .vite-hooks/pre-commit, и блок staged в vite.config.ts можно оставить для дальнейшего использования. Либо их можно удалить отдельно, если проект больше не нуждается в них. vp hooks disable не удаляет эти файлы, принадлежащие проекту.