@mintlify/previewing
Version:
Preview Mintlify docs locally
52 lines (51 loc) • 2.17 kB
JavaScript
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;