UNPKG

one

Version:

One is a new React Framework that makes Vite serve both native and web.

53 lines (42 loc) 1.59 kB
import './polyfills-server' import FSExtra from 'fs-extra' import type { Hono } from 'hono' import type { VXRNOptions } from 'vxrn' import { setServerGlobals } from './server/setServerGlobals' import { setupBuildInfo } from './server/setupBuildOptions' import { ensureExists } from './utils/ensureExists' import type { One } from './vite/types' process.on('uncaughtException', (err) => { console.error(`[one] Uncaught exception`, err?.stack || err) }) export async function serve(args: VXRNOptions['server'] & { app?: Hono } = {}) { const buildInfo = (await FSExtra.readJSON(`dist/buildInfo.json`)) as One.BuildInfo const { oneOptions } = buildInfo setServerGlobals() setupBuildInfo(buildInfo) ensureExists(oneOptions) // to avoid loading the CACHE_KEY before we set it use async imports: const { labelProcess } = await import('./cli/label-process') const { removeUndefined } = await import('./utils/removeUndefined') const { loadEnv, serve: vxrnServe } = await import('vxrn/serve') const { oneServe } = await import('./server/oneServe') labelProcess('serve') if (args.loadEnv) { await loadEnv('production') } return await vxrnServe({ app: args.app, // fallback to one plugin ...oneOptions.server, // override with any flags given to cli ...removeUndefined({ port: args.port ? +args.port : undefined, host: args.host, compress: args.compress, }), async beforeRegisterRoutes(options, app) { await oneServe(oneOptions, buildInfo, app) }, async afterRegisterRoutes(options, app) {}, }) }