vike
Version:
The Framework *You* Control - Next.js & Nuxt alternative for unprecedented flexibility and dependability.
35 lines (34 loc) • 1.45 kB
JavaScript
export { preview };
import { prepareViteApiCall } from './prepareViteApiCall.js';
import { preview as previewVite } from 'vite';
import { importServerProductionIndex } from '@brillout/vite-plugin-server-entry/runtime';
import { getOutDirs } from '../vite/shared/getOutDirs.js';
import { assertWarning } from './utils.js';
import pc from '@brillout/picocolors';
import path from 'node:path';
import { onSetupPreview } from '../runtime/utils.js';
/**
* Programmatically trigger `$ vike preview`
*
* https://vike.dev/api#preview
*/
async function preview(options = {}) {
onSetupPreview();
const { viteConfigFromUserEnhanced, viteConfigResolved } = await prepareViteApiCall(options, 'preview');
if (viteConfigResolved.vitePluginServerEntry?.inject) {
const outDir = getOutDirs(viteConfigResolved).outDirRoot;
const { outServerIndex } = await importServerProductionIndex({ outDir });
const outServerIndexRelative = path.relative(viteConfigResolved.root, outServerIndex);
assertWarning(false, `Never run ${pc.cyan('$ vike preview')} in production, run ${pc.cyan(`$ node ${outServerIndexRelative}`)} instead (or Bun/Deno).`, { onlyOnce: true });
return {
viteConfig: viteConfigResolved,
};
}
else {
const server = await previewVite(viteConfigFromUserEnhanced);
return {
viteServer: server,
viteConfig: server.config,
};
}
}