Опция server.open управляет автоматическим открытием
браузера после запуска dev-сервера Vite. После выполнения команды
запуска проекта браузер может автоматически открыть локальный адрес
приложения, например http://localhost:5173.
Базовая настройка:
import { defineConfig } from 'vite'
export default defineConfig({
server: {
open: true
}
})
После запуска команды:
npm run dev
Vite автоматически откроет браузер с адресом локального сервера.
Во время старта Vite:
Поведение зависит от платформы:
open.Наиболее простой вариант:
server: {
open: true
}
Эквивалент CLI-команды:
vite --open
или:
npm run dev -- --open
Параметр может принимать строку. В этом случае открывается не корневой URL, а указанный маршрут.
Пример:
export default defineConfig({
server: {
open: '/admin'
}
})
После запуска откроется:
http://localhost:5173/admin
Это особенно полезно для:
Если указан собственный порт:
export default defineConfig({
server: {
port: 8080,
open: true
}
})
Vite откроет:
http://localhost:8080
hostПри работе по локальной сети:
export default defineConfig({
server: {
host: '0.0.0.0',
port: 3000,
open: true
}
})
Браузер всё равно откроет локальный адрес:
http://localhost:3000
Даже если сервер доступен с других устройств по IP.
При включённом HTTPS:
export default defineConfig({
server: {
https: true,
open: true
}
})
Будет открыт адрес:
https://localhost:5173
Часто требуется включать открытие браузера только в определённых режимах.
Пример условной конфигурации:
import { defineConfig } from 'vite'
export default defineConfig(({ mode }) => {
return {
server: {
open: mode === 'development'
}
}
})
Настройка может зависеть от .env:
VITE_OPEN_BROWSER=true
Конфигурация:
import { defineConfig, loadEnv } from 'vite'
export default defineConfig(({ mode }) => {
const env = loadEnv(mode, process.cwd())
return {
server: {
open: env.VITE_OPEN_BROWSER === 'true'
}
}
})
Для полного отключения:
server: {
open: false
}
Это поведение используется по умолчанию во многих командах и CI-средах.
При запуске из встроенного терминала VS Code браузер обычно открывается корректно.
Однако некоторые расширения могут перехватывать запуск и открывать встроенный preview вместо обычного браузера.
В Windows Subsystem for Linux автоматическое открытие браузера зависит от настройки интеграции Windows и Linux.
Иногда требуется ручная настройка переменных окружения или утилит открытия URL.
В контейнерах Docker автоматическое открытие браузера обычно бесполезно, поскольку контейнер не имеет доступа к графическому интерфейсу хост-системы.
Поэтому чаще используется:
server: {
open: false
}
В системах непрерывной интеграции открытие браузера отключается автоматически или не выполняется из-за отсутствия GUI.
При наличии нескольких приложений:
export default defineConfig({
server: {
port: 4100,
open: '/dashboard'
}
})
Это позволяет быстро открывать нужную часть системы без ручного перехода.
Настройка может задаваться напрямую в package.json.
Пример:
{
"scripts": {
"dev": "vite --open"
}
}
Или:
{
"scripts": {
"dev": "vite --open /admin"
}
}
Полный пример:
import { defineConfig } from 'vite'
export default defineConfig({
server: {
host: '0.0.0.0',
port: 5173,
strictPort: true,
https: false,
open: '/login'
}
})
Для SPA-приложения с роутингом:
server: {
open: '/app'
}
После запуска разработчик сразу попадает в основную часть приложения.
server: {
open: '/admin/dashboard'
}
Экономит время при постоянной работе с backend-интерфейсом.
server: {
open: '/docs'
}
Полезно при разработке UI-kit, design-system или внутренней документации.
true и строкиtrueopen: true
Открывает корневой адрес:
/
open: '/profile'
Открывает конкретный путь:
/profile
Если порт уже используется:
server: {
port: 3000,
open: true
}
и strictPort выключен, Vite может выбрать другой
порт:
3001
3002
3003
После этого браузер откроет уже новый фактический адрес.
strictPortserver: {
port: 3000,
strictPort: true,
open: true
}
Если порт занят:
Возможные причины:
Vite использует браузер по умолчанию, установленный в системе.
Изменение производится средствами ОС, а не Vite.
Обычно связано с:
import { defineConfig } from 'vite'
export default defineConfig(({ mode }) => {
const isDev = mode === 'development'
return {
server: {
host: 'localhost',
port: 5173,
strictPort: false,
https: false,
open: isDev ? '/dashboard' : false
}
}
})
Такая конфигурация:
/dashboard;