sanity
Version:
Sanity is a real-time content infrastructure with a scalable, hosted backend featuring a Graph Oriented Query Language (GROQ), asset pipelines and fast edge caches
47 lines (40 loc) • 1.3 kB
text/typescript
import {type CliCommandArguments, type CliCommandContext, type CliConfig} from '@sanity/cli'
import path from 'path'
import {type PreviewServerOptions, startPreviewServer} from '../../server'
import {getSharedServerConfig, gracefulServerDeath} from '../../util/servers'
export interface StartPreviewServerCommandFlags {
host?: string
port?: string
}
export default async function startSanityPreviewServer(
args: CliCommandArguments<StartPreviewServerCommandFlags>,
context: CliCommandContext,
): Promise<void> {
const flags = args.extOptions
const {workDir, cliConfig} = context
const defaultRootDir = path.resolve(path.join(workDir, 'dist'))
const rootDir = path.resolve(args.argsWithoutOptions[0] || defaultRootDir)
const config = getPreviewServerConfig({flags, workDir, cliConfig, rootDir})
try {
await startPreviewServer(config)
} catch (err) {
gracefulServerDeath('preview', config.httpHost, config.httpPort, err)
}
}
function getPreviewServerConfig({
flags,
workDir,
cliConfig,
rootDir,
}: {
flags: StartPreviewServerCommandFlags
rootDir: string
workDir: string
cliConfig?: CliConfig
}): PreviewServerOptions {
const baseConfig = getSharedServerConfig({flags, workDir, cliConfig})
return {
...baseConfig,
root: rootDir,
}
}