@benpsnyder/analogjs-esm-vite-plugin-nitro
Version:
A Vite plugin for adding a nitro API server
40 lines • 1.57 kB
JavaScript
import { copyPublicAssets, prerender } from 'nitropack';
import { createNitro, build, prepare } from 'nitropack';
import { existsSync, unlinkSync } from 'node:fs';
import { addPostRenderingHooks } from './hooks/post-rendering-hook.js';
export async function buildServer(options, nitroConfig) {
const nitro = await createNitro({
dev: false,
preset: process.env['BUILD_PRESET'],
...nitroConfig,
});
if (options?.prerender?.postRenderingHooks) {
addPostRenderingHooks(nitro, options.prerender.postRenderingHooks);
}
await prepare(nitro);
await copyPublicAssets(nitro);
if (options?.ssr &&
nitroConfig?.prerender?.routes &&
(nitroConfig?.prerender?.routes.find((route) => route === '/') ||
nitroConfig?.prerender?.routes?.length === 0)) {
const indexFileExts = ['', '.br', '.gz'];
indexFileExts.forEach((fileExt) => {
// Remove the root index.html(.br|.gz) files
const indexFilePath = `${nitroConfig?.output?.publicDir}/index.html${fileExt ? `${fileExt}` : ''}`;
if (existsSync(indexFilePath)) {
unlinkSync(indexFilePath);
}
});
}
if (nitroConfig?.prerender?.routes &&
nitroConfig?.prerender?.routes?.length > 0) {
console.log(`Prerendering static pages...`);
await prerender(nitro);
}
if (!options?.static) {
console.log('Building Server...');
await build(nitro);
}
await nitro.close();
}
//# sourceMappingURL=build-server.js.map