mirror of
https://github.com/storybookjs/storybook.git
synced 2025-04-08 04:51:48 +08:00
36 lines
1.0 KiB
TypeScript
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));
|
|
}
|