UNPKG

@mintlify/previewing

Version:

Preview Mintlify docs locally

52 lines (51 loc) 2.17 kB
import { jsx as _jsx } from "react/jsx-runtime"; import { prebuild } from '@mintlify/prebuild'; import fse, { pathExists } from 'fs-extra'; import isOnline from 'is-online'; import { CLIENT_PATH, DOT_MINTLIFY, CMD_EXEC_PATH, VERSION_PATH, NEXT_PUBLIC_PATH, NEXT_PROPS_PATH, } from '../constants.js'; import { addLog, clearLogs } from '../logging-state.js'; import { ErrorLog, SpinnerLog } from '../logs.js'; import { silentUpdateClient } from './update.js'; import { run } from './run.js'; const dev = async (argv) => { const hasInternet = await isOnline(); const localSchema = argv['local-schema']; const clientVersion = argv['client-version']; const packageName = argv.packageName; const groups = argv.groups; const cliVersion = argv.cliVersion; await fse.ensureDir(DOT_MINTLIFY); const versionString = (await pathExists(VERSION_PATH)) ? fse.readFileSync(VERSION_PATH, 'utf8') : null; if (!versionString && !hasInternet) { clearLogs(); addLog(_jsx(ErrorLog, { message: `running ${packageName} dev after updating requires an internet connection.` })); await new Promise((resolve) => setTimeout(resolve, 50)); process.exit(1); } addLog(_jsx(SpinnerLog, { message: "preparing local preview..." })); const { needsUpdate, error } = await silentUpdateClient({ versionString, clientVersion, cliVersion }); if (error) { clearLogs(); addLog(_jsx(ErrorLog, { message: error })); await new Promise((resolve) => setTimeout(resolve, 50)); process.exit(1); } // clear preexisting prebuild files fse.emptyDirSync(NEXT_PUBLIC_PATH); fse.emptyDirSync(NEXT_PROPS_PATH); process.chdir(CLIENT_PATH); try { await prebuild(CMD_EXEC_PATH, { localSchema, groups }); } catch (err) { clearLogs(); const errorText = err instanceof Error && err.message ? err.message : 'prebuild step failed'; addLog(_jsx(ErrorLog, { message: errorText })); await new Promise((resolve) => setTimeout(resolve, 50)); process.exit(1); } await run({ ...argv, needsUpdate }); }; export default dev;