Back

Начало работы с Vite+

Начало работы с Vite+

Vite+ — это унифицированная цепочка инструментов разработчика от VoidZero — компании, основанной Эваном Ю, создателем Vite и Vue, — которая объединяет Vite, Vitest, Rolldown, Oxlint, Oxfmt, tsdown и Vite Task под единым CLI-инструментом vp. Проект был анонсирован как альфа-релиз 13 марта 2026 года; статус альфа был снят с выходом версии v0.1.21 13 мая 2026 года, а актуальным релизом на момент написания статьи является v0.1.23 (29 мая 2026 года). Проект остаётся в стадии до 1.0, поэтому следует воспринимать его как программное обеспечение на раннем этапе развития, а не как проверенный в продакшене стек — тем не менее альфа-статус уже снят, а базовый рабочий процесс для начала работы достаточно стабилен для использования в реальных проектах.

В этом руководстве рассматривается установка Vite+, создание проекта по шаблону, запуск сервера разработки, выполнение проверок и тестов, сборка продакшен-версии, а также понимание того, как vp вписывается в типичный фронтенд-рабочий процесс.

Ключевые выводы

  • Vite+ — это не Vite 8 и не замена Vite: Vite 8 — это сервер разработки и инструмент сборки, поставляемый внутри Vite+, тогда как Vite+ — это унифицированный CLI-слой, объединяющий Vite вместе с Vitest, Rolldown, Oxlint, Oxfmt, tsdown и Vite Task под командой vp.
  • Пять команд, определяющих повседневный рабочий процесс: vp create (создание проекта), vp dev (сервер разработки), vp check (линтинг + форматирование + проверки с учётом типов), vp test (Vitest) и vp build (продакшен-бандл на основе Rolldown).
  • vp dev, vp test и vp build — это встроенные команды, которые выполняются напрямую и не считывают данные из скриптов package.json; для выполнения пользовательского скрипта, определённого в package.json, используйте vp run <имя-скрипта>.
  • Vite 8, обеспечивающий работу сервера разработки и продакшен-сборок в Vite+, требует Node.js версии 20.19 или выше, либо Node.js версии 22.12 или выше.
  • Oxfmt всё ещё находится в стадии до 1.0 (в Vite+ v0.1.23 поставляется версия v0.52.0), поэтому перед внедрением в продакшен-кодовую базу проверьте его вывод относительно вашей существующей конфигурации Prettier.

Что такое Vite+ на самом деле

Vite+ — это CLI-дистрибутив, объединяющий подобранный набор фронтенд-инструментов за единой точкой входа. Каждый компонент — это существующий проект, а не новое изобретение: Vite 8 в качестве сервера разработки, Rolldown — написанный на Rust продакшен-бандлер, API-совместимый с Rollup, Vitest — тест-раннер, Oxlint и Oxfmt — линтер и форматтер, построенные на компиляторной инфраструктуре Oxc, tsdown — для сборки библиотек, и Vite Task — для оркестрации задач и кэширования в монорепозиториях.

Прирост производительности этих инструментов носит структурный, а не аддитивный характер: Rolldown, Oxlint и Oxfmt совместно используют Oxc — написанную на Rust компиляторную инфраструктуру JavaScript от VoidZero — в качестве общего слоя парсинга и трансформации. Ускорение достигается за счёт того, что базовый движок быстр сам по себе, а не за счёт независимой оптимизации каждого инструмента.

Vite+ дополняет Vite, а не заменяет его. Если вы уже используете Vite, вы можете постепенно переходить на Vite+; если нет — Vite+ не является той точкой входа, с которой стоит начинать.

Предварительные требования

Перед установкой убедитесь, что ваша среда соответствует требованиям Vite 8 к среде выполнения. Vite 8 требует Node.js версии 20.19 или выше, либо Node.js версии 22.12 или выше — Vite+ не заменяет Node.js, а управляет используемой в проекте версией Node.js через vp env. Запуск Vite+ на более старой версии Node.js приведёт к ошибке ещё до запуска сервера разработки.

Также потребуется POSIX-совместимая оболочка на macOS или Linux, либо PowerShell на Windows.

Установка Vite+

Vite+ устанавливается как единый бинарный файл с именем vp. На macOS или Linux:

curl -fsSL https://vite.plus | bash

В Windows PowerShell:

irm https://vite.plus/ps1 | iex

Перезапустите терминал, затем проверьте установку:

vp --version
vp help

В процессе установки Vite+ спрашивает, должен ли он управлять глобальной средой выполнения Node.js. Если вы уже используете nvm, fnm или asdf, вы можете отказаться от управляемого режима, и Vite+ будет использовать системный Node.js. Это поведение можно изменить позднее с помощью vp env on или vp env off.

Создание первого проекта

vp create создаёт новый проект по шаблону Vite+, в интерактивном режиме запрашивая фреймворк, пакетный менеджер, а также TypeScript или JavaScript:

vp create

Интерактивный диалог позволяет выбрать шаблон (Vite, Vue, Svelte, Nuxt, Next.js, React Router или TanStack Start), пакетный менеджер (npm, pnpm, yarn, bun), а также TypeScript или JavaScript. Чтобы пропустить диалог, передайте имя шаблона:

vp create vue my-app
cd my-app
vp install

Созданный проект содержит единственный файл vite.config.ts, в котором будет храниться конфигурация для всех инструментов цепочки — линтер, форматтер, тест-раннер и хуки для проверки staged-файлов читают именно из этого файла.

Запуск сервера разработки с помощью vp dev

vp dev запускает сервер разработки Vite 8 с настройками по умолчанию — для типичного случая флаги не требуются:

vp dev

vp dev запускает сервер разработки Vite 8 напрямую. Он не выполняет скрипт dev из вашего package.json — это распространённая точка путаницы, и поведение здесь противоположно тому, как работает npm run dev. Если в вашем проекте есть пользовательский скрипт dev (например, запускающий бэкенд-процесс параллельно с фронтендом), вызовите его явно:

vp run dev

То же правило применяется к vp test и vp build: это встроенные команды, которые маршрутизируются через интегрированные инструменты Vite+. vp run <скрипт> — это запасной вариант для произвольных скриптов из package.json, который также получает кэширование с учётом входных данных от Vite Task при вызове с флагом --cache.

Единый файл vite.config.ts

Vite+ объединяет конфигурацию для всех обёрнутых инструментов — Vite, Vitest, Oxlint, Oxfmt и хуков для staged-файлов — в единый файл vite.config.ts в корне проекта. Вместо того чтобы поддерживать отдельные файлы .eslintrc, .prettierrc и vitest.config.ts, всё выражается через один типизированный вызов defineConfig.

Минимальная конфигурация выглядит следующим образом:

import { defineConfig } from 'vite-plus'

export default defineConfig({})

По мере роста проекта можно добавлять конфигурацию для отдельных инструментов:

import { defineConfig } from 'vite-plus'

export default defineConfig({
  fmt: {
    singleQuote: true,
    semi: false,
  },
  lint: {
    ignorePatterns: ['dist/**'],
  },
  test: {
    include: ['src/**/*.test.ts'],
  },
})

Vite+ также поддерживает проверку staged-файлов через блок конфигурации staged:

import { defineConfig } from 'vite-plus'

export default defineConfig({
  fmt: { singleQuote: true, semi: false },
  lint: { ignorePatterns: ['dist/**'] },
  test: { include: ['src/**/*.test.ts'] },
  staged: {
    '*.{js,ts,tsx,vue,svelte}': 'vp check --fix',
  },
})

Для включения проверок при коммите установите Git-хуки:

vp config

После этого Vite+ будет автоматически запускать настроенные задачи для staged-файлов во время коммитов через vp staged — без необходимости отдельной настройки Husky или lint-staged.

Как и остальные части Vite+, система конфигурации продолжает развиваться, пока проект остаётся в стадии до 1.0. Если вы переходите на новые релизы, стоит проверять официальную документацию и примечания к выпускам на предмет изменений в конфигурации перед обновлением.

Запуск проверок с помощью vp check

vp check выполняет форматирование, линтинг и проверки с учётом типов за один проход по текущему проекту:

vp check

Для автоматического исправления того, что можно безопасно исправить:

vp check --fix

--fix обрабатывает большинство проблем форматирования и многие правила линтера, но не может устранить ошибки типов или логические ошибки. Воспринимайте его как инструмент автоматического исправления, а не как замену ревью кода. Проверки типов выполняются с помощью tsgolint (линтера с учётом типов, построенного на тулчейне TypeScript Go), а не полной компиляцией tsc --noEmit — быстро для выявления распространённых ошибок типов, но не замена tsc в CI, если требуется исчерпывающая компиляция типов. Поскольку Oxlint, Oxfmt и tsgolint используют инфраструктуру, согласованную с Oxc, vp check работает заметно быстрее, чем сопоставимая цепочка ESLint + Prettier + tsc --noEmit на той же кодовой базе.

Запуск тестов с помощью vp test

vp test выполняет набор тестов Vitest один раз и завершает работу — Vite+ инвертирует поведение Vitest по умолчанию, при котором тот остаётся в режиме наблюдения, поэтому режим наблюдения здесь включается явно:

vp test                  # однократный запуск (Vite+ не использует режим наблюдения по умолчанию, в отличие от Vitest)
vp test watch            # переход в режим наблюдения
vp test run --coverage   # однократный запуск с покрытием

vp test вызывает Vitest, используя блок test в vite.config.ts. Обратите внимание, что это инвертирует поведение Vitest по умолчанию — запуск vp test без аргументов завершается после одного прохода, тогда как автономный vitest остался бы в режиме наблюдения. Поскольку Vitest уже использует конвейер трансформации Vite, отдельный файл vitest.config.ts поддерживать не нужно — тот же defineConfig охватывает оба инструмента.

Создание продакшен-сборки с помощью vp build

vp build компилирует продакшен-бандл с использованием Vite 8 и Rolldown, помещая результат в dist/ в соответствии с теми же соглашениями, что и vite build:

vp build

vp build компилирует продакшен-бандл с использованием Vite 8 и Rolldown. Вывод помещается в dist/ в соответствии с теми же соглашениями, что и vite build. Поскольку Rolldown разработан с API-совместимостью с Rollup, существующие плагины Rollup должны продолжать работать — хотя авторы плагинов всё ещё вносят исправления для граничных случаев, поэтому проверьте все пользовательские плагины в отдельной ветке, прежде чем полагаться на vp build в релизах.

Для кэширования входных данных сборки между запусками в монорепозитории:

vp run --cache build

Vite Task создаёт отпечатки объявленных входных данных и пропускает пакеты, входные данные которых не изменились при последующих запусках. Это та же задача рабочего процесса, которую решает Turborepo, но интегрированная в тулчейн, а не добавленная поверх него.

Распространённым сбоем в продакшене при смене бандлера является незаметная регрессия source map. Перед развёртыванием результата vp build убедитесь, что стек-трейсы в вашем инструменте мониторинга ошибок или записи сессий по-прежнему разрешаются в исходные файлы — это одна из наиболее частых проблем при миграции между инструментами сборки, которую OpenReplay фиксирует в реальных данных сессий.

Справочник команд vp

КомандаНазначениеБазовый инструмент
vp createСоздание нового проекта по шаблонуШаблоны Vite+
vp devЗапуск сервера разработкиVite 8
vp checkЛинтинг, форматирование, проверки с учётом типовOxlint, Oxfmt, tsgolint
vp fmtФорматирование файловOxfmt
vp testЗапуск тестовVitest
vp buildПродакшен-бандлVite 8 + Rolldown
vp run <скрипт>Запуск скрипта из package.json (с опциональным кэшированием)Vite Task
vp envУправление версией Node.js для проектаМенеджер среды выполнения Vite+
vp migrateМиграция существующего проекта Vite на Vite+
vp installУстановка зависимостей через пакетный менеджер проектаnpm/pnpm/yarn

Справочник актуален для Vite+ v0.1.23 (29 мая 2026 года).

Интеграция Vite+ с GitHub Actions

Для CI VoidZero публикует экшен voidzero-dev/setup-vp, который устанавливает CLI vp и опционально кэширует зависимости. Минимальный рабочий процесс:

name: CI
on: [push, pull_request]
jobs:
  ci:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: voidzero-dev/setup-vp@v1
        with:
          node-version: '22'
          cache: true
      - run: vp install
      - run: vp check
      - run: vp test
      - run: vp build

Это заменяет отдельные шаги линтинга, форматирования, проверки типов и сборки четырьмя вызовами vp, которые читают из того же vite.config.ts, что используют разработчики локально.

Что нужно знать перед внедрением

Несколько честных предостережений относительно текущего релиза:

  • Oxfmt всё ещё находится в стадии до 1.0. Сравните его вывод с вашей существующей конфигурацией Prettier в отдельной ветке, прежде чем переключать продакшен-кодовые базы.
  • Экосистемы фреймворков по-прежнему имеют собственные соглашения. Несмотря на то что Vite+ может создавать проекты для таких фреймворков, как Nuxt и TanStack Start, специфичная для фреймворка конфигурация и рабочие процессы могут по-прежнему находиться за пределами унифицированной модели конфигурации Vite+.
  • Стадия до 1.0 означает возможность ломающих изменений. Зафиксируйте версию vp в CI и читайте журнал изменений Vite+ перед обновлением.

Что делать дальше

Установите Vite+ на сайд-проект на этой неделе, запустите vp check один раз и оцените, каково это — когда шесть инструментов отвечают на одну команду. Если этот опыт оправдает ожидания, попробуйте vp migrate на некритичном проекте Vite и изучите diff перед слиянием — миграция выполняется быстро, но именно в ревью вы обнаружите граничные случаи.

Часто задаваемые вопросы

Vite+ является открытым исходным кодом под лицензией MIT. VoidZero изначально обсуждала модель двойного лицензирования, однако альфа-релиз в марте 2026 года вышел под лицензией MIT, и это сохраняется вплоть до версии v0.1.23. Вы можете использовать Vite+ в личных проектах, проектах с открытым исходным кодом или коммерческих кодовых базах без лицензионных отчислений. Коммерческим продуктом в портфеле VoidZero является Void — отдельная платформа для развёртывания; Void — это не Vite+.

Да. Запустите vp migrate внутри существующего проекта Vite, чтобы конвертировать его в настройку Vite+; команда сохраняет ваш существующий vite.config.ts и добавляет блоки lint, fmt, test и staged рядом с текущей конфигурацией Vite. Изучите diff перед коммитом, поскольку миграция затрагивает скрипты package.json и может предложить удалить зависимости ESLint, Prettier, Husky и lint-staged, которые теперь заменяют vp check и блок конфигурации staged.

Vite+ включает Vite Task, который создаёт отпечатки объявленных входных данных и пропускает неизменённые пакеты при последующих запусках через vp run --cache. Turborepo и Nx реализуют тот же паттерн кэширования с учётом входных данных, но как автономные тест-раннеры, обёртывающие произвольный тулинг. Vite Task имеет более узкую область применения и тесно связан с CLI vp, поэтому наиболее полезен тогда, когда ваш монорепозиторий уже стандартизирован на Vite, Vitest и Rolldown, а не использует разнородный стек сборки.

vp check по умолчанию запускает Oxlint и Oxfmt, а не ESLint и Prettier, и эти два стека несовместимы по конфигурации. Вы можете оставить ESLint и Prettier в проекте и вызывать их через скрипты vp run lint или vp run format, однако в этом случае вы теряете преимущество производительности от общего парсера Oxc. Для кодовых баз с обширными пользовательскими правилами ESLint или плагинами Prettier проверьте покрытие правил Oxlint и Oxfmt в отдельной ветке перед переключением.

Gain Debugging Superpowers

Unleash the power of session replay to reproduce bugs, track slowdowns and uncover frustrations in your app. Get complete visibility into your frontend with OpenReplay — the most advanced open-source session replay tool for developers. Check our GitHub repo and join the thousands of developers in our community.

OpenReplay