Skip to content

Решение проблем

Используйте эту страницу, если Vite+ ведёт себя не так, как вы ожидаете.

ИНФОРМАЦИЯ

Vite+ находится в стадии бета-версии: он стабилен, но ещё не завершён. Мы добавляем новые возможности на пути к версии 1.0 и уделяем приоритетное внимание обратной связи от сообщества, поэтому, пожалуйста, сообщите нам, если что-то работает не так, как ожидается.

Поддерживаемые версии инструментов

Vite+ рассчитан на использование современных версий базовых инструментов.

  • Vite 8 или новее
  • Vitest 4.1 или новее

Если вы переносите существующий проект и он всё ещё зависит от более старых версий Vite или Vitest, сначала обновите их, а затем переходите на Vite+.

Выполните vp toolchain, чтобы посмотреть версии из локального пакета Vite+. Выполните vp toolchain --global, чтобы посмотреть версии из глобального релиза Vite+.

vp check не запускает линтинг с учётом типов или проверку типов

  • Убедитесь, что в vite.config.ts включены lint.options.typeAware и lint.options.typeCheck
  • Проверьте, использует ли ваш tsconfig.json параметр compilerOptions.baseUrl

Путь проверки типов Oxlint на базе tsgolint не поддерживает baseUrl. Команды vp migrate и vp lint --init пытаются выполнить исправление vp dlx @andrewbranch/ts5to6 --fixBaseUrl . перед включением линтинга с учётом типов. Если это исправление завершается ошибкой или пользователь отказывается от его применения, Vite+ пропускает включение typeAware и typeCheck.

Вложенная конфигурация линтинга или форматирования не применяется

В настоящее время Vite+ не поддерживает вложенную конфигурацию линтинга или форматирования. При запуске vp lint, vp fmt или vp check из корня рабочего пространства не полагайтесь на конфигурацию во вложенных каталогах или на блоки lint и fmt в файлах vite.config.ts на уровне пакетов для переопределения настроек из корневой конфигурации.

Храните настройки линтинга и форматирования в корневом vite.config.ts. Используйте lint.overrides и fmt.overrides для настроек, специфичных для файлов или пакетов. Также можно импортировать объекты конфигурации в корневую конфигурацию, чтобы хранить настройки в отдельных файлах.

Для интеграции с IDE у нас есть параметры конфигурации disableNestedConfig и fmt.disableNestedConfig, которые позволяют отключить вложенные конфигурации линтинга и форматирования и сохранить поведение редактора согласованным с корневой конфигурацией Vite+. Инструкции по настройке для вашего редактора см. в разделе Интеграция с IDE.

Пока мы не планируем добавлять поддержку вложенной конфигурации. Среди факторов, которые мы рассматриваем, — то, как неявное обнаружение конфигурации влияет на предсказуемость линтинга и форматирования, какой контекст нужен ИИ-агентам для понимания применяемых настроек, а также потенциальные затраты производительности на поиск и загрузку нескольких конфигураций. В то же время мы признаём, что хранение контекста, специфичного для пакета, рядом с кодом может иметь свои преимущества. Рассмотренные нами сценарии использования пока не дали нам достаточно веских оснований для фиксации такой семантики. Отложив поддержку, мы сохраняем возможность добавить её позднее, и хотели бы узнать, почему вашему проекту необходимы вложенные конфигурации, особенно в тех случаях, когда переопределений на уровне корневой конфигурации недостаточно.

Нужны ли вам вложенные конфигурации? Поделитесь своим сценарием использования и мнением на GitHub, указав структуру проекта, причину, по которой вам нужны вложенные конфигурации, и достаточно ли для ваших задач переопределений на уровне корневой конфигурации.

Мы искренне надеемся получить ваши отзывы. Это поможет нам решить, стоит ли улучшать текущую ситуацию в будущем.

Расширение VS Code не читает vite.config.ts

Если в VS Code открыто несколько папок, общий языковой сервер Oxc может выбрать другое рабочее пространство. Из-за этого может показаться, что поддержка vite.config.ts отсутствует.

  • Убедитесь, что расширение использует нужное рабочее пространство.

vp dev или vp build не запускает мой сценарий

В отличие от менеджеров пакетов, встроенные команды нельзя переопределить. Если вы хотите запустить сценарий из package.json, используйте вместо этого vp run <script>.

Например:

  • vp dev всегда запускает встроенный сервер разработки Vite
  • vp build всегда запускает встроенную сборку Vite
  • vp test всегда запускает встроенную команду Vitest
  • vp run dev, vp run build и vp run test вместо этого запускают соответствующие сценарии из package.json

См. раздел Встроенные команды и сценарии, чтобы узнать, когда следует использовать каждый из этих вариантов.

ИНФОРМАЦИЯ

Вы также можете запускать пользовательские задачи, определённые в vite.config.ts, и полностью отказаться от сценариев в package.json.

Проверки индексированных файлов и хуки коммитов

Если vp staged завершается ошибкой или ваш pre-commit хук не запускается:

  • убедитесь, что vite.config.ts содержит блок staged
  • убедитесь, что принадлежащий проекту pre-commit хук запускает vp staged (например, .vite-hooks/pre-commit)
  • выполните vp hooks status, чтобы проверить предпочтение, core.hooksPath и наличие установленного диспетчера
  • выполните vp hooks enable (или vp config), чтобы установить диспетчер хуков
  • если в статусе указано Preference: disabled (local), снова включите хуки с помощью vp hooks enable
  • проверьте, не были ли хуки намеренно отключены через VP_GIT_HOOKS=0

Чтобы отключить хуки в этом клоне, не удаляя принадлежащие проекту файлы конфигурации, выполните vp hooks disable. Полный рабочий процесс описан в руководстве по хукам коммитов.

Минимальная конфигурация staged выглядит так:

vite.config.ts
ts
import { defineConfig } from 'vite-plus';

export default defineConfig({
  staged: {
    '*': 'vp check --fix',
  },
});

Медленная загрузка конфигурации из-за тяжёлых плагинов

Когда vite.config.ts импортирует плагины на верхнем уровне, они оцениваются при каждой команде, включая vp lint, vp fmt, интеграции с редакторами и долгоживущие фоновые процессы. Это может замедлить загрузку конфигурации и вызвать побочные эффекты при настройке плагинов, такие как чтение файлов, запуск наблюдателей или подключение к сервисам.

Используйте lazyPlugins, чтобы пропускать создание экземпляров плагинов, когда vite-plus загружает вашу конфигурацию только для чтения блока метаданных (lint, fmt, check, staged, pack, create, поиск задач run/cache и инструменты редактора). При этом плагины по-прежнему будут загружаться во всех случаях, когда Vite действительно запускается: dev, build, test, preview, а также при любых сборках, запускаемых вашими собственными сценариями (например, задачей vp run или командой vp exec).

vite.config.ts
ts
import { defineConfig, lazyPlugins } from 'vite-plus';
import myPlugin from 'vite-plugin-foo';

export default defineConfig({
  plugins: lazyPlugins(() => [myPlugin()]),
});

Для тяжёлых плагинов, которые следует загружать лениво, используйте динамический import():

vite.config.ts
ts
import { defineConfig, lazyPlugins } from 'vite-plus';

export default defineConfig({
  plugins: lazyPlugins(async () => {
    const { default: heavyPlugin } = await import('vite-plugin-heavy');
    return [heavyPlugin()];
  }),
});

Как получить помощь

Если вы столкнулись с проблемой, обратитесь за помощью:

  • Discord — для обсуждений в реальном времени и помощи в устранении неполадок
  • GitHub — для сообщений об ошибках, обсуждений и создания ишью

При сообщении о проблеме обязательно укажите:

  • Полный вывод команд vp env current, vp --version и vp toolchain
  • Менеджер пакетов, используемый в проекте
  • Точные шаги для воспроизведения проблемы и ваш файл vite.config.ts
  • Минимальный репозиторий для воспроизведения или запускаемую песочницу