Skip to content
На этой странице

Free Online Conference

ViteConf - Oct 11

Get your ticket now!

Параметры сервера

server.host

  • Тип: string | boolean
  • По умолчанию: 'localhost'

Укажите, какие IP-адреса сервер должен прослушивать. Установите для этого параметра значение 0.0.0.0 или true, чтобы прослушивать все адреса, включая локальные и общедоступные адреса.

Это можно установить через CLI, используя --host 0.0.0.0 или --host.

ПРИМЕЧАНИЕ

Бывают случаи, когда другие серверы могут отвечать вместо Vite.

В первом случае используется localhost. Node.js в версии 17 по умолчанию переупорядочивает результат разрешения DNS. При доступе к localhost, браузеры используют DNS для разрешения адреса, и этот адрес может отличаться от адреса, который прослушивает Vite. Vite печатает разрешенный адрес, когда он отличается.

Вы можете установить dns.setDefaultResultOrder('verbatim'), чтобы отключить поведение переупорядочения. Затем Vite напечатает адрес как localhost.

js
// vite.config.js
import { defineConfig } from 'vite'
import dns from 'dns'

dns.setDefaultResultOrder('verbatim')

export default defineConfig({
  // omit
})

Во втором случае используются подстановочные знаки (например, 0.0.0.0). Это связано с тем, что серверы, прослушивающие хосты без подстановочных знаков, имеют приоритет над серверами, прослушивающими хосты с подстановочными знаками.

server.port

  • Тип: number
  • По умолчанию: 5173

Укажите порт сервера. Обратите внимание, что если порт уже используется, Vite автоматически попробует следующий доступный порт, поэтому это может быть не тот порт, который сервер в конечном итоге прослушивает.

server.strictPort

  • Тип: boolean

Установите значение true, чтобы выйти, если порт уже используется, вместо того, чтобы автоматически пытаться использовать следующий доступный порт.

server.https

  • Тип: boolean | https.ServerOptions

Включите TLS + HTTP/2. Обратите внимание, что переход на TLS происходит только в том случае, если также используется опция server.proxy.

Значение также может быть объектом параметров, переданным в https.createServer().

Нужен действующий сертификат. Для базовой настройки вы можете добавить @vitejs/plugin-basic-ssl в плагины проекта, которые будут автоматически создавать и кэшировать собственный -подписанный сертификат. Но мы рекомендуем создавать собственные сертификаты.

server.open

  • Тип: boolean | string

Автоматически открывать приложение в браузере при запуске сервера. Когда значение представляет собой строку, оно будет использоваться в качестве имени пути URL-адреса. Если вы хотите открыть сервер в определенном браузере, который вам нравится, вы можете установить env process.env.BROWSER (например, firefox). Подробнее смотрите пакет open.

Пример:

js
export default defineConfig({
  server: {
    open: '/docs/index.html'
  }
})

server.proxy

  • Тип: Record<string, string | ProxyOptions>

Настройте пользовательские правила прокси для сервера разработки. Ожидает объект пар { key: options }. Если ключ начинается с ^, он будет интерпретирован как RegExp. Параметр configure можно использовать для доступа к экземпляру прокси.

Использует http-proxy. Полные параметры здесь.

В некоторых случаях вы также можете настроить базовый сервер разработки (например, чтобы добавить настраиваемый мидлвар во внутреннее приложение connect). Для этого вам нужно написать свой собственный плагин и использовать функцию configureServer.

Пример:

js
export default defineConfig({
  server: {
    proxy: {
      // string shorthand
      '/foo': 'http://localhost:4567',
      // with options
      '/api': {
        target: 'http://jsonplaceholder.typicode.com',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, '')
      },
      // with RegEx
      '^/fallback/.*': {
        target: 'http://jsonplaceholder.typicode.com',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/fallback/, '')
      },
      // Using the proxy instance
      '/api': {
        target: 'http://jsonplaceholder.typicode.com',
        changeOrigin: true,
        configure: (proxy, options) => {
          // proxy will be an instance of 'http-proxy'
        }
      },
      // Proxying websockets or socket.io
      '/socket.io': {
        target: 'ws://localhost:5173',
        ws: true
      }
    }
  }
})

server.cors

  • Тип: boolean | CorsOptions

Настройте CORS для сервера разработки. Это включено по умолчанию и позволяет любое происхождение. Передайте объект опций, чтобы точно настроить поведение, или false, чтобы отключить.

server.headers

  • Тип: OutgoingHttpHeaders

Укажите заголовки ответа сервера.

server.hmr

  • Тип: boolean | { protocol?: string, host?: string, port?: number, path?: string, timeout?: number, overlay?: boolean, clientPort?: number, server?: Server }

Отключите или настройте соединение HMR (в случаях, когда веб-сокет HMR должен использовать адрес, отличный от http-сервера).

Установите для server.hmr.overlay значение false, чтобы отключить наложение ошибок сервера.

clientPort — это расширенный параметр, который переопределяет порт только на стороне клиента, позволяя вам обслуживать веб-сокет на порту, отличном от того, который ищет клиентский код.

Когда server.hmr.server определен, Vite будет обрабатывать запросы на подключение HMR через предоставленный сервер. Если не в режиме промежуточного программного обеспечения, Vite попытается обработать запросы на подключение HMR через существующий сервер. Это может быть полезно при использовании самозаверяющих сертификатов или когда вы хотите открыть Vite по сети на одном порту.

Посмотрите vite-setup-catalogue для некоторых примеров.

ПРИМЕЧАНИЕ

Ожидается, что в конфигурации по умолчанию обратные прокси-серверы перед Vite будут поддерживать проксирование WebSocket. Если клиенту Vite HMR не удается подключиться к WebSocket, клиент вернется к подключению WebSocket напрямую к серверу Vite HMR, минуя обратные прокси:

Отказ от прямого подключения к веб-сокету. Проверьте https://vitejs.ru/config/server-options.html#server-hmr , чтобы удалить предыдущую ошибку подключения.

Ошибку, которая появляется в браузере, когда происходит откат, можно игнорировать. Чтобы избежать ошибки путем прямого обхода обратных прокси-серверов, вы можете:

  • настроить обратный прокси-сервер на прокси-сервер WebSocket
  • установите server.strictPort = true и установите для server.hmr.clientPort то же значение, что и для server.port
  • установите для server.hmr.port значение, отличное от server.port

server.watch

  • Тип: object

Параметры наблюдателя файловой системы для передачи chokidar.

Наблюдатель сервера Vite по умолчанию пропускает каталоги .git/ и node_modules/. Если вы хотите просмотреть пакет внутри node_modules/, вы можете передать отрицательный шаблон glob в server.watch.ignored. То есть:

js
export default defineConfig({
  server: {
    watch: {
      ignored: ['!**/node_modules/your-package-name/**']
    }
  },
  // The watched package must be excluded from optimization,
  // so that it can appear in the dependency graph and trigger hot reload.
  optimizeDeps: {
    exclude: ['your-package-name']
  }
})

Использование Vite в подсистеме Windows для Linux (WSL) 2

При запуске Vite на WSL2 просмотр файловой системы не работает, когда файл редактируется приложениями Windows (процесс, отличный от WSL2). Это связано с ограничением WSL2. Это также относится к работе в Docker с серверной частью WSL2.

Чтобы исправить это, вы можете:

  • Рекомендуется: используйте приложения WSL2 для редактирования файлов.
    • Также рекомендуется переместить папку проекта за пределы файловой системы Windows. Доступ к файловой системе Windows из WSL2 медленный. Удаление этих накладных расходов повысит производительность.
  • Установите { usePolling: true }.

server.middlewareMode

  • Тип: boolean
  • По умолчанию: false

Создайте сервер Vite в режиме мидлвара.

js
import express from 'express'
import { createServer as createViteServer } from 'vite'

async function createServer() {
  const app = express()

  // Create Vite server in middleware mode
  const vite = await createViteServer({
    server: { middlewareMode: true },
    appТип: 'custom' // don't include Vite's default HTML handling middlewares
  })
  // Use vite's connect instance as middleware
  app.use(vite.middlewares)

  app.use('*', async (req, res) => {
    // Since `appType` is `'custom'`, should serve response here.
    // Note: if `appType` is `'spa'` or `'mpa'`, Vite includes middlewares to handle
    // HTML requests and 404s so user middlewares should be added
    // before Vite's middlewares to take effect instead
  })
}

createServer()

server.base

  • Тип: string | undefined

Добавляйте эту папку в HTTP-запросы для использования при проксировании vite в качестве подпапки. Должен начинаться и заканчиваться символом /.

server.fs.strict

  • Тип: boolean
  • По умолчанию: true (enabled by default since Vite 2.7)

Ограничить обслуживание файлов за пределами корня рабочей области.

server.fs.allow

  • Тип: string[]

Ограничить файлы, которые можно обслуживать через /@fs/. Когда для server.fs.strict установлено значение true, доступ к файлам за пределами этого списка каталогов, которые не импортированы из разрешенного файла, приведет к ошибке 403.

Vite будет искать корень потенциального рабочего пространства и использовать его по умолчанию. Действительная рабочая область соответствует следующим условиям, в противном случае будет использоваться корень проекта.

  • содержит поле workspaces в package.json
  • содержит один из следующих файлов
    • lerna.json
    • pnpm-workspace.yaml

Принимает путь для указания пользовательского корня рабочей области. Это может быть абсолютный путь или путь относительно корня проекта. Для примера:

js
export default defineConfig({
  server: {
    fs: {
      // Allow serving files from one level up to the project root
      allow: ['..']
    }
  }
})

Когда указан server.fs.allow, автоматическое обнаружение корня рабочей области будет отключено. Чтобы расширить исходное поведение, предоставляется утилита searchForWorkspaceRoot:

js
import { defineConfig, searchForWorkspaceRoot } from 'vite'

export default defineConfig({
  server: {
    fs: {
      allow: [
        // search up for workspace root
        searchForWorkspaceRoot(process.cwd()),
        // your custom rules
        '/path/to/custom/allow'
      ]
    }
  }
})

server.fs.deny

  • Тип: string[]
  • По умолчанию: ['.env', '.env.*', '*.{pem,crt}'].

Черный список для конфиденциальных файлов, обслуживание которых ограничено сервером Vite dev. Это будет иметь более высокий приоритет, чем server.fs.allow. Поддерживаются шаблоны picomatch.

server.origin

  • Тип: string

Определяет источник сгенерированных URL-адресов активов во время разработки.

js
export default defineConfig({
  server: {
    origin: 'http://127.0.0.1:8080'
  }
})

Выпущено под лицензией MIT. (dev)