|
|
|
@ -1,9 +1,16 @@
|
|
|
|
|
import minimist from 'minimist'
|
|
|
|
|
import c from 'picocolors'
|
|
|
|
|
import { createLogger, type Logger } from 'vite'
|
|
|
|
|
import { build, createServer, serve } from '.'
|
|
|
|
|
import {
|
|
|
|
|
build,
|
|
|
|
|
createServer,
|
|
|
|
|
disposeMdItInstance,
|
|
|
|
|
resolveConfig,
|
|
|
|
|
serve
|
|
|
|
|
} from '.'
|
|
|
|
|
import { version } from '../../package.json'
|
|
|
|
|
import { init } from './init/init'
|
|
|
|
|
import { clearCache } from './markdownToVue'
|
|
|
|
|
import { bindShortcuts } from './shortcuts'
|
|
|
|
|
|
|
|
|
|
if (process.env.DEBUG) {
|
|
|
|
@ -40,30 +47,38 @@ if (!command || command === 'dev') {
|
|
|
|
|
argv.optimizeDeps = { force: true }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let config = await resolveConfig(root, argv).catch(
|
|
|
|
|
logErrorAndExit.bind(null, `failed to resolve config. error:`)
|
|
|
|
|
)
|
|
|
|
|
const createDevServer = async (isRestart = true) => {
|
|
|
|
|
const server = await createServer(root, argv, async () => {
|
|
|
|
|
const server = await createServer(root, argv, restartServer, config)
|
|
|
|
|
function restartServer() {
|
|
|
|
|
if (!restartPromise) {
|
|
|
|
|
restartPromise = (async () => {
|
|
|
|
|
try {
|
|
|
|
|
config = await resolveConfig(root, argv)
|
|
|
|
|
} catch (err: any) {
|
|
|
|
|
logError(`failed to resolve config. error:`, err)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
disposeMdItInstance()
|
|
|
|
|
clearCache()
|
|
|
|
|
await server.close()
|
|
|
|
|
await createDevServer()
|
|
|
|
|
})().finally(() => {
|
|
|
|
|
restartPromise = undefined
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return restartPromise
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
await server.listen(undefined, isRestart)
|
|
|
|
|
logVersion(server.config.logger)
|
|
|
|
|
server.printUrls()
|
|
|
|
|
bindShortcuts(server, createDevServer)
|
|
|
|
|
bindShortcuts(server, restartServer)
|
|
|
|
|
}
|
|
|
|
|
createDevServer(false).catch((err) => {
|
|
|
|
|
createLogger().error(
|
|
|
|
|
`${c.red(`failed to start server. error:`)}\n${err.message}\n${err.stack}`
|
|
|
|
|
)
|
|
|
|
|
process.exit(1)
|
|
|
|
|
})
|
|
|
|
|
createDevServer(false).catch(
|
|
|
|
|
logErrorAndExit.bind(null, `failed to start server. error:`)
|
|
|
|
|
)
|
|
|
|
|
} else if (command === 'init') {
|
|
|
|
|
createLogger().info('', { clear: true })
|
|
|
|
|
init(argv.root)
|
|
|
|
@ -74,21 +89,30 @@ if (!command || command === 'dev') {
|
|
|
|
|
onAfterConfigResolve(siteConfig) {
|
|
|
|
|
logVersion(siteConfig.logger)
|
|
|
|
|
}
|
|
|
|
|
}).catch((err) => {
|
|
|
|
|
createLogger().error(
|
|
|
|
|
`${c.red(`build error:`)}\n${err.message}\n${err.stack}`
|
|
|
|
|
)
|
|
|
|
|
process.exit(1)
|
|
|
|
|
})
|
|
|
|
|
}).catch(logErrorAndExit.bind(null, `build error:`))
|
|
|
|
|
} else if (command === 'serve' || command === 'preview') {
|
|
|
|
|
serve(argv).catch((err) => {
|
|
|
|
|
createLogger().error(
|
|
|
|
|
`${c.red(`failed to start server. error:`)}\n${err.message}\n${err.stack}`
|
|
|
|
|
)
|
|
|
|
|
process.exit(1)
|
|
|
|
|
})
|
|
|
|
|
serve(argv).catch(
|
|
|
|
|
logErrorAndExit.bind(null, `failed to start server. error:`)
|
|
|
|
|
)
|
|
|
|
|
} else {
|
|
|
|
|
createLogger().error(c.red(`unknown command "${command}".`))
|
|
|
|
|
process.exit(1)
|
|
|
|
|
logErrorAndExit(`unknown command "${command}".`)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function logErrorAndExit(message: string, err?: any): never {
|
|
|
|
|
logError(message, err)
|
|
|
|
|
process.exit(1)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function logError(message: string, err?: any) {
|
|
|
|
|
const logger = createLogger()
|
|
|
|
|
logger.error(
|
|
|
|
|
[
|
|
|
|
|
c.red(message),
|
|
|
|
|
err && 'message' in err && err.message,
|
|
|
|
|
err && 'stack' in err && err.stack
|
|
|
|
|
]
|
|
|
|
|
.filter(Boolean)
|
|
|
|
|
.join('\n')
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|