2023-12-27 14:45:28 -03:00

36 lines
1.0 KiB
TypeScript

import type { Server } from 'http';
import type { Options } from '@storybook/types';
import { commonConfig } from './vite-config';
import { getOptimizeDeps } from './optimizeDeps';
import { sanitizeEnvVars } from './envs';
export async function createViteServer(options: Options, devServer: Server) {
const { presets } = options;
const commonCfg = await commonConfig(options, 'development');
const config = {
...commonCfg,
// Needed in Vite 5: https://github.com/storybookjs/storybook/issues/25256
assetsInclude: ['/sb-preview/**'],
// Set up dev server
server: {
middlewareMode: true,
hmr: {
port: options.port,
server: devServer,
},
fs: {
strict: true,
},
},
appType: 'custom' as const,
optimizeDeps: await getOptimizeDeps(commonCfg, options),
};
const finalConfig = await presets.apply('viteFinal', config, options);
const { createServer } = await import('vite');
return createServer(await sanitizeEnvVars(options, finalConfig));
}