import { green } from "kleur/colors"; import fs from "node:fs"; import { performance } from "perf_hooks"; import { attachContentServerListeners } from "../../content/index.js"; import { telemetry } from "../../events/index.js"; import * as msg from "../messages.js"; import { startContainer } from "./container.js"; import { createContainerWithAutomaticRestart } from "./restart.js"; import { ensureProcessNodeEnv } from "../util.js"; async function dev(inlineConfig) { ensureProcessNodeEnv("development"); const devStart = performance.now(); await telemetry.record([]); const restart = await createContainerWithAutomaticRestart({ inlineConfig, fs }); const logger = restart.container.logger; const devServerAddressInfo = await startContainer(restart.container); logger.info( "SKIP_FORMAT", msg.serverStart({ startupTime: performance.now() - devStart, resolvedUrls: restart.container.viteServer.resolvedUrls || { local: [], network: [] }, host: restart.container.settings.config.server.host, base: restart.container.settings.config.base }) ); const currentVersion = "4.2.8"; if (currentVersion.includes("-")) { logger.warn("SKIP_FORMAT", msg.prerelease({ currentVersion })); } if (restart.container.viteServer.config.server?.fs?.strict === false) { logger.warn("SKIP_FORMAT", msg.fsStrictWarning()); } await attachContentServerListeners(restart.container); logger.info(null, green("watching for file changes...")); return { address: devServerAddressInfo, get watcher() { return restart.container.viteServer.watcher; }, handle(req, res) { return restart.container.handle(req, res); }, async stop() { await restart.container.close(); } }; } export { dev as default };