@mieweb/wikigdrive
Version:
Google Drive to MarkDown synchronization
54 lines (53 loc) • 1.7 kB
JavaScript
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);
}