Параметр server.open в конфигурации Vite управляет
автоматическим открытием браузера после запуска dev-сервера. По
умолчанию после выполнения команды запуска Vite выводит URL локального
сервера в терминал, но браузер не открывается автоматически. Настройка
open изменяет это поведение.
Базовый пример:
import { defineConfig } from 'vite'
export default defineConfig({
server: {
open: true
}
})
После запуска команды:
npm run dev
Vite автоматически откроет браузер с адресом локального сервера, например:
http://localhost:5173
Во время старта dev-сервера Vite:
server.open.Механизм работает кроссплатформенно:
Для открытия используется системный браузер по умолчанию.
Параметр поддерживает два основных варианта:
open?: boolean | string
trueОткрывает корневой адрес проекта.
server: {
open: true
}
Результат:
http://localhost:5173/
falseПолностью отключает автоматическое открытие.
server: {
open: false
}
Это поведение используется по умолчанию.
Позволяет открыть конкретный путь внутри приложения.
server: {
open: '/admin'
}
После запуска откроется:
http://localhost:5173/admin
Это особенно удобно при разработке:
Vite не проверяет существование маршрута. Он просто добавляет путь к базовому URL.
Пример:
server: {
open: '/dashboard/users'
}
Будет открыт адрес:
http://localhost:5173/dashboard/users
Если приложение использует клиентский роутинг:
то переход обработается уже внутри SPA.
baseЕсли используется параметр base, итоговый URL строится с
его учётом.
Пример:
export default defineConfig({
base: '/app/',
server: {
open: true
}
})
Откроется:
http://localhost:5173/app/
Если указать строковый путь:
server: {
open: '/profile'
}
Результат:
http://localhost:5173/app/profile
В монорепозиториях автоматическое открытие особенно полезно, когда одновременно запускаются несколько приложений.
Пример:
export default defineConfig({
server: {
port: 3001,
open: '/admin'
}
})
После запуска сразу открывается нужный интерфейс, а не корень проекта.
Часто возникает необходимость включать открытие браузера только в локальной среде.
Пример:
import { defineConfig } from 'vite'
export default defineConfig({
server: {
open: process.env.NODE_ENV !== 'production'
}
})
Параметр можно комбинировать с режимами (mode).
import { defineConfig } from 'vite'
export default defineConfig(({ mode }) => {
return {
server: {
open: mode === 'development'
}
}
})
Пример:
VITE_OPEN_BROWSER=true
Конфигурация:
export default defineConfig({
server: {
open: process.env.VITE_OPEN_BROWSER === 'true'
}
})
В контейнерах Docker автоматическое открытие браузера обычно бесполезно, поскольку контейнер не имеет доступа к GUI-хосту.
Поэтому часто используют условие:
server: {
open: process.env.DOCKER !== 'true'
}
В Windows Subsystem for Linux возможны особенности:
Иногда автоматическое открытие приходится отключать:
server: {
open: false
}
При включённом HTTPS откроется защищённый URL.
Пример:
server: {
https: true,
open: true
}
Результат:
https://localhost:5173
Если сертификат самоподписанный, браузер может показать предупреждение безопасности.
Параметр open никак не влияет на:
Он выполняется только один раз — во время старта dev-сервера.
Если указан host, браузер откроет именно этот адрес.
Пример:
server: {
host: '0.0.0.0',
open: true
}
В большинстве случаев будет открыт:
http://localhost:5173
Но поведение может отличаться в зависимости от ОС.
Если указан конкретный IP:
server: {
host: '192.168.0.15',
open: true
}
Откроется:
http://192.168.0.15:5173
server: {
port: 8080,
open: true
}
Результат:
http://localhost:8080
Если указанный порт занят, Vite автоматически попытается использовать следующий свободный порт.
Пример:
server: {
port: 3000,
open: true
}
Если 3000 занят:
http://localhost:3001
Браузер откроет именно фактически используемый порт.
Во многих проектах Vite используется как frontend-сервер рядом с backend-приложением:
Часто требуется открывать не корень Vite, а конкретный backend-маршрут.
Пример:
server: {
open: '/login'
}
Типичный сценарий:
server: {
open: '/admin'
}
или:
server: {
open: '/dashboard'
}
Это экономит время при постоянной разработке одной области приложения.
Vite может автоматически открывать встроенную документацию проекта.
Пример:
server: {
open: '/docs'
}
Открытие браузера можно включать не только через
vite.config.js, но и через CLI.
Пример:
vite --open
или:
npm run dev -- --open
Эквивалентно:
server: {
open: true
}
CLI также поддерживает указание пути.
Пример:
vite --open /admin
Пример:
{
"scripts": {
"dev": "vite --open"
}
}
или:
{
"scripts": {
"dev": "vite --open /admin"
}
}
Если одновременно используются:
приоритет обычно имеет CLI.
Пример:
vite --open=false
может переопределить:
server: {
open: true
}
Vite можно запускать программно.
Пример:
import { createServer } from 'vite'
async function start() {
const server = await createServer({
server: {
open: true
}
})
await server.listen()
}
start()
server.open:
Причины:
Vite использует браузер по умолчанию в системе. Настройка конкретного
браузера напрямую через server.open отсутствует.
Это происходит, если dev-сервер перезапускается:
export default defineConfig({
server: {
open: true
}
})
export default defineConfig({
server: {
open: '/admin'
}
})
export default defineConfig({
server: {
host: '0.0.0.0',
open: false
}
})
Браузер на хост-машине не открывается, а приложение тестируется с телефона по локальной сети.
export default defineConfig(({ mode }) => ({
server: {
open: mode === 'local'
}
}))
Автоматическое открытие браузера удобно:
Отключение open предпочтительно: