Skip to content

Commit 5d1ec96

Browse files
committed
feat: use vite logger
1 parent f974381 commit 5d1ec96

File tree

9 files changed

+73
-36
lines changed

9 files changed

+73
-36
lines changed

Diff for: src/node/build/build.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,9 @@ export async function build(
106106

107107
await siteConfig.buildEnd?.(siteConfig)
108108

109-
console.log(`build complete in ${((Date.now() - start) / 1000).toFixed(2)}s.`)
109+
siteConfig.logger.info(
110+
`build complete in ${((Date.now() - start) / 1000).toFixed(2)}s.`
111+
)
110112
}
111113

112114
function linkVue() {

Diff for: src/node/cli.ts

+35-20
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import c from 'picocolors'
22
import minimist from 'minimist'
3+
import { createLogger } from 'vite'
34
import { createServer, build, serve } from '.'
45
import { version } from '../../package.json'
56

67
const argv: any = minimist(process.argv.slice(2))
78

8-
console.log(c.cyan(`vitepress v${version}`))
9+
const tempLogger = createLogger()
910

1011
const command = argv._[0]
1112
const root = argv._[command ? 1 : 0]
@@ -17,27 +18,41 @@ if (!command || command === 'dev') {
1718
const createDevServer = async () => {
1819
const server = await createServer(root, argv, async () => {
1920
await server.close()
20-
await createDevServer()
21+
const newServer = await createDevServer()
22+
await newServer.listen()
23+
newServer.printUrls()
2124
})
22-
await server.listen()
23-
console.log()
24-
server.printUrls()
25+
return server
2526
}
26-
createDevServer().catch((err) => {
27-
console.error(c.red(`failed to start server. error:\n`), err)
28-
process.exit(1)
29-
})
30-
} else if (command === 'build') {
31-
build(root, argv).catch((err) => {
32-
console.error(c.red(`build error:\n`), err)
33-
process.exit(1)
27+
createDevServer()
28+
.then(async (server) => {
29+
await server.listen()
30+
server.config.logger.info(
31+
`\n ${c.green(`${c.bold('VITEPRESS')} v${version}`)}\n`,
32+
{ clear: !server.config.logger.hasWarned }
33+
)
34+
server.printUrls()
35+
})
36+
.catch((err) => {
37+
tempLogger.error(c.red(`failed to start server. error:\n${err}`))
38+
process.exit(1)
39+
})
40+
} else {
41+
tempLogger.info(`\n ${c.green(`${c.bold('VITEPRESS')} v${version}`)}\n`, {
42+
clear: true
3443
})
35-
} else if (command === 'serve' || command === 'preview') {
36-
serve(argv).catch((err) => {
37-
console.error(c.red(`failed to start server. error:\n`), err)
44+
if (command === 'build') {
45+
build(root, argv).catch((err) => {
46+
tempLogger.error(c.red(`build error:\n`), err)
47+
process.exit(1)
48+
})
49+
} else if (command === 'serve' || command === 'preview') {
50+
serve(argv).catch((err) => {
51+
tempLogger.error(c.red(`failed to start server. error:\n${err}`))
52+
process.exit(1)
53+
})
54+
} else {
55+
tempLogger.info(c.red(`unknown command "${command}".`))
3856
process.exit(1)
39-
})
40-
} else {
41-
console.log(c.red(`unknown command "${command}".`))
42-
process.exit(1)
57+
}
4358
}

Diff for: src/node/config.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@ import path from 'path'
66
import { match, compile } from 'path-to-regexp'
77
import c from 'picocolors'
88
import {
9+
createLogger,
910
loadConfigFromFile,
1011
mergeConfig as mergeViteConfig,
1112
normalizePath,
12-
type UserConfig as ViteConfig
13+
type UserConfig as ViteConfig,
14+
type Logger
1315
} from 'vite'
1416
import { DEFAULT_THEME_PATH } from './alias'
1517
import type { MarkdownOptions } from './markdown/markdown'
@@ -180,6 +182,7 @@ export interface SiteConfig<ThemeConfig = any>
180182
map: Record<string, string | undefined>
181183
inv: Record<string, string | undefined>
182184
}
185+
logger: Logger
183186
}
184187

185188
const resolve = (root: string, file: string) =>
@@ -206,6 +209,7 @@ export async function resolveConfig(
206209
command: 'serve' | 'build' = 'serve',
207210
mode = 'development'
208211
): Promise<SiteConfig> {
212+
const logger = createLogger('info', { prefix: '[vitepress]' })
209213
const [userConfig, configPath, configDeps] = await resolveUserConfig(
210214
root,
211215
command,
@@ -264,6 +268,7 @@ export async function resolveConfig(
264268
configDeps,
265269
outDir,
266270
cacheDir,
271+
logger,
267272
tempDir: resolve(root, '.temp'),
268273
markdown: userConfig.markdown,
269274
lastUpdated: userConfig.lastUpdated,

Diff for: src/node/markdown/markdown.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import { sfcPlugin, type SfcPluginOptions } from '@mdit-vue/plugin-sfc'
1515
import { titlePlugin } from '@mdit-vue/plugin-title'
1616
import { tocPlugin, type TocPluginOptions } from '@mdit-vue/plugin-toc'
1717
import { slugify } from '@mdit-vue/shared'
18+
import type { Logger } from 'vite'
1819
import type { IThemeRegistration } from 'shiki'
1920
import { highlight } from './plugins/highlight'
2021
import { highlightLinePlugin } from './plugins/highlightLines'
@@ -55,14 +56,15 @@ export type MarkdownRenderer = MarkdownIt
5556
export const createMarkdownRenderer = async (
5657
srcDir: string,
5758
options: MarkdownOptions = {},
58-
base = '/'
59+
base = '/',
60+
logger: Logger
5961
): Promise<MarkdownRenderer> => {
6062
const md = MarkdownIt({
6163
html: true,
6264
linkify: true,
6365
highlight:
6466
options.highlight ||
65-
(await highlight(options.theme, options.defaultHighlightLang)),
67+
(await highlight(options.theme, options.defaultHighlightLang, logger)),
6668
...options
6769
}) as MarkdownRenderer
6870

Diff for: src/node/markdown/plugins/highlight.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
type Processor
1313
} from 'shiki-processor'
1414
import type { ThemeOptions } from '../markdown'
15+
import type { Logger } from 'vite'
1516

1617
const nanoid = customAlphabet('abcdefghijklmnopqrstuvwxyz', 10)
1718

@@ -57,7 +58,8 @@ const errorLevelProcessor = defineProcessor({
5758

5859
export async function highlight(
5960
theme: ThemeOptions = 'material-theme-palenight',
60-
defaultLang: string = ''
61+
defaultLang: string = '',
62+
logger: Logger
6163
): Promise<(str: string, lang: string, attrs: string) => string> {
6264
const hasSingleTheme = typeof theme === 'string' || 'name' in theme
6365
const getThemeName = (themeValue: IThemeRegistration) =>
@@ -89,7 +91,7 @@ export async function highlight(
8991
if (lang) {
9092
const langLoaded = highlighter.getLoadedLanguages().includes(lang as any)
9193
if (!langLoaded && lang !== 'ansi') {
92-
console.warn(
94+
logger.warn(
9395
c.yellow(
9496
`The language '${lang}' is not loaded, falling back to '${
9597
defaultLang || 'txt'

Diff for: src/node/markdownToVue.ts

+8-3
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,14 @@ export async function createMarkdownToVueRenderFn(
3939
base = '/',
4040
includeLastUpdatedData = false,
4141
cleanUrls = false,
42-
siteConfig: SiteConfig | null = null
42+
siteConfig: SiteConfig
4343
) {
44-
const md = await createMarkdownRenderer(srcDir, options, base)
44+
const md = await createMarkdownRenderer(
45+
srcDir,
46+
options,
47+
base,
48+
siteConfig.logger
49+
)
4550
pages = pages.map((p) => slash(p.replace(/\.md$/, '')))
4651
const replaceRegex = genReplaceRegexp(userDefines, isBuild)
4752

@@ -95,7 +100,7 @@ export async function createMarkdownToVueRenderFn(
95100
// validate data.links
96101
const deadLinks: string[] = []
97102
const recordDeadLink = (url: string) => {
98-
console.warn(
103+
siteConfig.logger.warn(
99104
c.yellow(
100105
`\n(!) Found dead link ${c.cyan(url)} in file ${c.white(
101106
c.dim(file)

Diff for: src/node/plugin.ts

+7-4
Original file line numberDiff line numberDiff line change
@@ -290,19 +290,22 @@ export async function createVitePressPlugin(
290290
async handleHotUpdate(ctx) {
291291
const { file, read, server } = ctx
292292
if (file === configPath || configDeps.includes(file)) {
293-
console.log(
293+
siteConfig.logger.info(
294294
c.green(
295-
`\n${path.relative(
295+
`${path.relative(
296296
process.cwd(),
297297
file
298298
)} changed, restarting server...`
299-
)
299+
),
300+
{ clear: true, timestamp: true }
300301
)
301302
try {
302303
clearCache()
303304
await recreateServer?.()
304305
} catch (err) {
305-
console.error(c.red(`failed to restart server. error:\n`), err)
306+
siteConfig.logger.error(
307+
c.red(`failed to restart server. error:\n${err}`)
308+
)
306309
}
307310
return
308311
}

Diff for: src/node/serve/serve.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,15 @@ export async function serve(options: ServeOptions = {}) {
5454
return polka({ onNoMatch })
5555
.use(base, compress, serve)
5656
.listen(port, () => {
57-
console.log(`Built site served at http://localhost:${port}/${base}/\n`)
57+
site.logger.info(
58+
`Built site served at http://localhost:${port}/${base}/\n`
59+
)
5860
})
5961
} else {
6062
return polka({ onNoMatch })
6163
.use(compress, serve)
6264
.listen(port, () => {
63-
console.log(`Built site served at http://localhost:${port}/\n`)
65+
site.logger.info(`Built site served at http://localhost:${port}/\n`)
6466
})
6567
}
6668
}

Diff for: src/node/server.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export async function createServer(
2323
cacheDir: config.cacheDir,
2424
// logLevel: 'warn',
2525
plugins: await createVitePressPlugin(config, false, {}, {}, recreateServer),
26-
server: serverOptions
26+
server: serverOptions,
27+
customLogger: config.logger
2728
})
2829
}

0 commit comments

Comments
 (0)