UNPKG

@farmfe/core

Version:

Farm is a extremely fast web build tool written in Rust. Farm can start a project in milliseconds and perform HMR within 10ms, making it much faster than similar tools like webpack and vite.

78 lines (77 loc) 2.74 kB
import Koa from 'koa'; import { Compiler } from '../compiler/index.js'; import { DevServerMiddleware, NormalizedServerConfig, UserPreviewServerConfig, UserServerConfig } from '../config/index.js'; import { Logger } from '../utils/index.js'; import { FileWatcher } from '../watcher/index.js'; import { HmrEngine } from './hmr-engine.js'; import { Server as httpServer } from './type.js'; import WsServer from './ws.js'; /** * Farm Dev Server, responsible for: * * parse and normalize dev server options * * launch http server based on options * * compile the project in dev mode and serve the production * * HMR middleware and websocket supported */ interface ServerUrls { local: string[]; network: string[]; } interface ImplDevServer { createServer(options: UserServerConfig): void; createDevServer(options: UserServerConfig): void; createPreviewServer(options: UserServerConfig): void; listen(): Promise<void>; close(): Promise<void>; getCompiler(): Compiler; } export declare class Server implements ImplDevServer { private _app; private restart_promise; private compiler; logger: Logger; ws: WsServer; config: NormalizedServerConfig & UserPreviewServerConfig; hmrEngine?: HmrEngine; server?: httpServer; publicDir?: string; publicPath?: string; resolvedUrls?: ServerUrls; watcher: FileWatcher; constructor({ compiler, logger }: { compiler?: Compiler | null; logger: Logger; }); getCompiler(): Compiler; app(): Koa; listen(): Promise<void>; private compile; startServer(serverOptions: UserServerConfig): Promise<void>; handleServerError(error: Error & { code?: string; }, port: number, host: string | undefined): void; close(): Promise<void>; restart(promise: () => Promise<void>): Promise<void>; private initializeKoaServer; createServer(options: NormalizedServerConfig & UserPreviewServerConfig): Promise<void>; createWebSocket(): void; private invalidateVite; createPreviewServer(options: UserPreviewServerConfig): Promise<void>; createDevServer(options: NormalizedServerConfig): Promise<void>; static resolvePortConflict(normalizedDevConfig: NormalizedServerConfig, logger: Logger): Promise<void>; /** * Add listening files for root manually * * > listening file with root must as file. * * @param root * @param deps */ addWatchFile(root: string, deps: string[]): void; applyMiddlewares(internalMiddlewares?: DevServerMiddleware[]): void; setCompiler(compiler: Compiler): void; private applyPreviewServerMiddlewares; private applyServerMiddlewares; private displayServerUrls; } export {};