JavaScript API
Die JavaScript-APIs von Vite sind vollständig typisiert, und es wird empfohlen, TypeScript zu verwenden oder die JavaScript-Typüberprüfung in VS Code zu aktivieren, um die Intellisense und Validierung zu nutzen.
createServer
Typ Signatur:
async function createServer(inlineConfig?: InlineConfig): Promise<ViteDevServer>Beispielverwendung:
import { fileURLToPath } from 'url'
import { createServer } from 'vite'
const __dirname = fileURLToPath(new URL('.', import.meta.url))
;(async () => {
const server = await createServer({
// Alle gültigen Benutzerkonfigurationsoptionen, plus `mode` und `configFile`
configFile: false,
root: __dirname,
server: {
port: 1337,
},
})
await server.listen()
server.printUrls()
server.bindCLIShortcuts({ print: true })
})()HINWEIS
Wenn Sie createServer und build im selben Node.js-Prozess verwenden, sind beide Funktionen auf process.env.NODE_ENV angewiesen, um ordnungsgemäß zu funktionieren, was auch von der mode-Konfigurationsoption abhängt. Um konflikte Verhalten zu verhindern, setzen Sie entweder process.env.NODE_ENV oder die mode der beiden APIs auf development. Andernfalls können Sie einen Kindprozess erstellen, um die APIs getrennt auszuführen.
HINWEIS
Bei Verwendung von middleware mode in Kombination mit proxy config for WebSocket sollte der übergeordnete http-Server in middlewareMode angegeben werden, um den Proxy korrekt zu binden.
Beispiel
import http from 'http'
import { createServer } from 'vite'
const parentServer = http.createServer() // oder express, koa, etc.
const vite = await createServer({
server: {
// Aktivieren des Middleware-Modus
middlewareMode: {
// Den übergeordneten http-Server für Proxy-WebSocket bereitstellen
server: parentServer,
},
},
proxy: {
'/ws': {
target: 'ws://localhost:3000',
// Proxying WebSocket
ws: true,
},
},
})
parentServer.use(vite.middlewares)InlineConfig
Die Schnittstelle InlineConfig erweitert UserConfig um zusätzliche Eigenschaften:
configFile: legen Sie die zu verwendende Konfigurationsdatei fest. Wenn nicht gesetzt, versucht Vite, automatisch eine aus dem Projektstamm zu ermitteln. Setzen Siefalse, um die automatische Auflösung zu deaktivieren.envFile: Setzen Siefalse, um.env-Dateien zu deaktivieren.
ResolvedConfig
Die Schnittstelle ResolvedConfig enthält alle Eigenschaften einer UserConfig, außer dass die meisten Eigenschaften aufgelöst und nicht undefiniert sind. Sie enthält auch Dienstprogramme wie:
config.assetsInclude: Eine Funktion zum Überprüfen, ob eineidals Ressource betrachtet wird.config.logger: Das interne Logger-Objekt von Vite.
ViteDevServer
interface ViteDevServer {
/**
* Das aufgelöste Vite-Konfigurationsobjekt.
*/
config: ResolvedConfig
/**
* Eine Connect-App-Instanz
* - Kann verwendet werden, um benutzerdefinierte Middleware an den Entwicklungs-Server anzuhängen.
* - Kann auch als Handler-Funktion eines benutzerdefinierten HTTP-Servers oder als Middleware in jedem Node.js-Framework im Connect-Stil verwendet werden.
*
* https://github.com/senchalabs/connect#use-middleware
*/
middlewares: Connect.Server
/**
* Native Node-HTTP-Server-Instanz.
* Wird in Middleware-Modus null sein.
*/
httpServer: http.Server | null
/**
* Chokidar-Watcher-Instanz. Wenn `config.server.watch` auf `null` gesetzt ist,
* werden keine Dateien überwacht und der Aufruf von `add` or `unwatch` hat keine Auswirkungen.
* https://github.com/paulmillr/chokidar/tree/3.6.0#api
*/
watcher: FSWatcher
/**
* Web-Socket-Server mit der Methode `send(payload)`.
*/
ws: WebSocketServer
/**
* Rollup-Plugin-Container, der Plugin-Hooks auf einer gegebenen Datei ausführen kann.
*/
pluginContainer: PluginContainer
/**
* Modulgraph, der die Importbeziehungen, die Zuordnung von URL zu Datei und den HMR-Status verfolgt.
*/
moduleGraph: ModuleGraph
/**
* Die aufgelösten URLs, die Vite auf dem CLI ausgibt (URL-kodiert).
* Gibt `null` zurück, wenn im Middleware-Modus oder wenn der Server an keinem Port läuft.
*/
resolvedUrls: ResolvedServerUrls | null
/**
* Löst, lädt und transformiert eine URL programmgesteuert auf und gibt das Ergebnis zurück, ohne den HTTP-Anforderungspipeline zu durchlaufen.
*/
transformRequest(
url: string,
options?: TransformOptions
): Promise<TransformResult | null>
/**
* Wendet Vite-eigene HTML-Transformationen und alle Plugin-HTML-Transformationen an.
*/
transformIndexHtml(
url: string,
html: string,
originalUrl?: string
): Promise<string>
/**
* Lädt ein gegebenes URL als instanziiertes Modul für SSR.
*/
ssrLoadModule(
url: string,
options?: { fixStacktrace?: boolean }
): Promise<Record<string, any>>
/**
* Behebt den SS-Stacktrace-Fehler.
*/
ssrFixStacktrace(e: Error): void
/**
* Löst HMR für ein Modul im Modulgraphen aus. Sie können die `server.moduleGraph`-API verwenden, um das neu zu ladende Modul abzurufen. Wenn `hmr` false ist, handelt es sich um einen No-Op.
*/
reloadModule(module: ModuleNode): Promise<void>
/**
* Startet den Server.
*/
listen(port?: number, isRestart?: boolean): Promise<ViteDevServer>
/**
* Startet den Server neu.
*
* @param forceOptimize - erzwingt die Optimierung neu zu bündeln, wie der `--force`-CLI-Flag
*/
restart(forceOptimize?: boolean): Promise<void>
/**
* Stoppt den Server.
*/
close(): Promise<void>
/**
* Bindet CLI-Verknüpfungen
*/
bindCLIShortcuts(options?: BindCLIShortcutsOptions<ViteDevServer>): void
}build
Typ Signatur:
async function build(
inlineConfig?: InlineConfig
): Promise<RollupOutput | RollupOutput[]>Beispielverwendung:
import path from 'node:path'
import { fileURLToPath } from 'node:url'
import { build } from 'vite'
const __dirname = fileURLToPath(new URL('.', import.meta.url))
;(async () => {
await build({
root: path.resolve(__dirname, './project'),
base: '/foo/',
build: {
rollupOptions: {
// ...
},
},
})
})()preview
Typ Signatur:
async function preview(inlineConfig?: InlineConfig): Promise<PreviewServer>Beispielverwendung:
import { preview } from 'vite'
;(async () => {
const previewServer = await preview({
// Alle gültigen Benutzerkonfigurationsoptionen, plus `mode` und `configFile`
preview: {
port: 8080,
open: true,
},
})
previewServer.printUrls()
previewServer.bindCLIShortcuts({ print: true })
})()PreviewServer
interface PreviewServer {
/**
* Das aufgelöste Vite-Konfigurationsobjekt
*/
config: ResolvedConfig
/**
* Eine Connect-App-Instanz.
* - Kann verwendet werden, um benutzerdefinierte Middleware an den Vorschauserver anzuhängen.
* - Kann auch als Handler-Funktion eines benutzerdefinierten HTTP-Servers oder als Middleware in jedem Node.js-Framework im Connect-Stil verwendet werden
*
* https://github.com/senchalabs/connect#use-middleware
*/
middlewares: Connect.Server
/**
* native Node-HTTP-Server-Instanz
*/
httpServer: http.Server
/**
* Die aufgelösten URLs, die Vite auf dem CLI ausgibt (URL-kodiert).
* Gibt `null` zurück, wenn der Server an keinem Port lauscht.
*/
resolvedUrls: ResolvedServerUrls | null
/**
* Druckt Server-URLs
*/
printUrls(): void
/**
* Bindet CLI-Verknüpfungen
*/
bindCLIShortcuts(options?: BindCLIShortcutsOptions<PreviewServer>): void
}resolveConfig
Typ Signatur:
async function resolveConfig(
inlineConfig: InlineConfig,
command: 'build' | 'serve',
defaultMode = 'development',
defaultNodeEnv = 'development',
isPreview = false
): Promise<ResolvedConfig>Der "Command"-Wert ist "Serve" in Dev und Preview, und "Build" in Build.
mergeConfig
Typ Signatur:
function mergeConfig(
defaults: Record<string, any>,
overrides: Record<string, any>,
isRoot = true
): Record<string, any>Vereinigt tief zwei Vite-Konfigurationen. isRoot repräsentiert die Ebene innerhalb der Vite-Konfiguration, die zusammengeführt wird. Legen Sie es beispielsweise auf false, wenn Sie zwei build-Optionen zusammenführen.
HINWEIS
mergeConfig akzeptiert nur Konfigurationen in Objektform. Wenn Sie eine Konfiguration in Rückrufform haben, sollten Sie sie aufrufen, bevor Sie sie an mergeConfig übergeben.
Sie können den defineConfig-Helfer verwenden, um eine Konfiguration in Rückrufform mit einer anderen Konfiguration zu vereinigen:
export default defineConfig((configEnv) =>
mergeConfig(configAsCallback(configEnv), configAsObject)
)searchForWorkspaceRoot
Typ Signatur:
function searchForWorkspaceRoot(
current: string,
root = searchForPackageRoot(current)
): stringVerwandt: server.fs.allow
Sucht nach dem Stammverzeichnis des potenziellen Arbeitsbereichs, wenn die folgenden Bedingungen erfüllt sind, andernfalls fällt es auf root zurück:
- enthält das Feld
workspacesinpackage.json - enthält eine der folgenden Dateien
lerna.jsonpnpm-workspace.yaml
loadEnv
Typ Signatur:
function loadEnv(
mode: string,
envDir: string,
prefixes: string | string[] = 'VITE_'
): Record<string, string>Verwandt: .env-Dateien
Lädt .env-Dateien im envDir. Standardmäßig werden nur Umgebungsvariablen mit dem Präfix VITE_ geladen, sofern prefixes nicht geändert wird.
normalizePath
Typ Signatur:
function normalizePath(id: string): stringVerwandt: Pfadnormalisierung
Normalisiert einen Pfad, um zwischen Vite-Plugins zu interoperieren.
transformWithEsbuild
Typ Signatur:
async function transformWithEsbuild(
code: string,
filename: string,
options?: EsbuildTransformOptions,
inMap?: object
): Promise<ESBuildTransformResult>Transformiert JavaScript oder TypeScript mit Esbuild. Nützlich für Plugins, die die interne Esbuild-Transformation von Vite bevorzugen.
loadConfigFromFile
Typ Signatur:
async function loadConfigFromFile(
configEnv: ConfigEnv,
configFile?: string,
configRoot: string = process.cwd(),
logLevel?: LogLevel,
customLogger?: Logger
): Promise<{
path: string
config: UserConfig
dependencies: string[]
} | null>Lädt eine Vite-Konfigurationsdatei manuell mit Esbuild.
preprocessCSS
- Experimental: Feedback geben
Type Signature:
async function preprocessCSS(
code: string,
filename: string,
config: ResolvedConfig
): Promise<PreprocessCSSResult>
interface PreprocessCSSResult {
code: string
map?: SourceMapInput
modules?: Record<string, string>
deps?: Set<string>
}Verarbeitet .css, .scss, .sass, .less, .styl und .stylus Dateien zu einfachem CSS, so dass es in Browsern verwendet oder von anderen Tools geparst werden kann. Ähnlich wie bei der built-in CSS pre-processing support muss der entsprechende Präprozessor installiert sein, wenn er verwendet wird.
Der verwendete Präprozessor wird aus der Erweiterung „Dateiname“ abgeleitet. Wenn der Dateiname mit .module.{ext} endet, wird er als CSS-Modul abgeleitet und das zurückgegebene Ergebnis enthält ein modules-Objekt, das die ursprünglichen Klassennamen auf die transformierten abbildet.
Beachten Sie, dass die Vorverarbeitung keine URLs in url() oder image-set() auflöst.