UNPKG

@mieweb/wikigdrive

Version:

Google Drive to MarkDown synchronization

54 lines (53 loc) 1.7 kB
import * as vite from 'vite'; const __dirname = globalThis[Symbol.for("import-meta-ponyfill-esmodule")](import.meta).dirname; const HTML_DIR = __dirname + '/../../../apps/ui'; export async function initUiServer(app, logger) { const customLogger = { hasWarned: false, // eslint-disable-next-line @typescript-eslint/no-empty-function clearScreen() { }, error: (msg) => { logger.error(msg); }, hasErrorLogged: () => { return false; }, info: (msg) => { logger.info(msg); }, warn: (msg) => { logger.warn(msg); }, warnOnce: (msg) => { logger.warn(msg); } }; const viteInstance = await vite.createServer({ root: HTML_DIR, logLevel: 'info', appType: 'custom', server: { middlewareMode: true, watch: { // During tests, we edit the files too fast and sometimes chokidar // misses change events, so enforce polling for consistency usePolling: true, interval: 100 } }, resolve: { alias: { 'vue/server-renderer': '@vue/server-renderer/dist/server-renderer.esm-bundler.js', } }, customLogger: customLogger }); async function renderSSR(href = '/') { const { render } = await viteInstance.ssrLoadModule('/src/entry-server.ts'); const appHtml = await render(href); return appHtml; } app.set('renderSSR', renderSSR); app.set('viteInstance', viteInstance); app.use(viteInstance.middlewares); }