Skip to content

Commit 179ee62

Browse files
committed
fix: log dead links in dev mode too
closes #4419
1 parent dfb02a4 commit 179ee62

File tree

1 file changed

+21
-9
lines changed

1 file changed

+21
-9
lines changed

src/node/plugin.ts

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,7 @@ export async function createVitePressPlugin(
221221
this.environment.mode === 'dev' &&
222222
this.environment.name === 'client'
223223
) {
224+
logDeadLinks(deadLinks, siteConfig.logger, true)
224225
const payload: PageDataPayload = {
225226
path: `/${siteConfig.rewrites.map[relativePath] || relativePath}`,
226227
pageData
@@ -238,15 +239,7 @@ export async function createVitePressPlugin(
238239

239240
renderStart() {
240241
if (allDeadLinks.length > 0) {
241-
allDeadLinks.forEach(({ url, file }, i) => {
242-
siteConfig.logger.warn(
243-
c.yellow(
244-
`${i === 0 ? '\n\n' : ''}(!) Found dead link ${c.cyan(
245-
url
246-
)} in file ${c.white(c.dim(file))}`
247-
)
248-
)
249-
})
242+
logDeadLinks(allDeadLinks, siteConfig.logger)
250243
siteConfig.logger.info(
251244
c.cyan(
252245
'\nIf this is expected, you can disable this check via config. Refer: https://vitepress.dev/reference/site-config#ignoredeadlinks\n'
@@ -423,3 +416,22 @@ export async function createVitePressPlugin(
423416
await dynamicRoutesPlugin(siteConfig)
424417
]
425418
}
419+
420+
function logDeadLinks(
421+
deadLinks: MarkdownCompileResult['deadLinks'],
422+
logger: SiteConfig['logger'],
423+
devMode = false
424+
) {
425+
const logged = new Set<string>()
426+
deadLinks.forEach(({ url, file }, i) => {
427+
const key = `${file}:::${url}`
428+
if (logged.has(key)) return
429+
logged.add(key)
430+
const prefix = '\n'.repeat(i === 0 ? (devMode ? 1 : 2) : 0)
431+
logger.warn(
432+
c.yellow(
433+
`${prefix}(!) Found dead link ${c.cyan(url)} in file ${c.white(c.dim(file))}`
434+
)
435+
)
436+
})
437+
}

0 commit comments

Comments
 (0)