|
|
@ -83,7 +83,6 @@ function getResolutionCache(siteConfig: SiteConfig) {
|
|
|
|
export async function createMarkdownToVueRenderFn(
|
|
|
|
export async function createMarkdownToVueRenderFn(
|
|
|
|
srcDir: string,
|
|
|
|
srcDir: string,
|
|
|
|
options: MarkdownOptions = {},
|
|
|
|
options: MarkdownOptions = {},
|
|
|
|
isBuild = false,
|
|
|
|
|
|
|
|
base = '/',
|
|
|
|
base = '/',
|
|
|
|
includeLastUpdatedData = false,
|
|
|
|
includeLastUpdatedData = false,
|
|
|
|
cleanUrls = false,
|
|
|
|
cleanUrls = false,
|
|
|
@ -115,7 +114,7 @@ export async function createMarkdownToVueRenderFn(
|
|
|
|
const relativePath = slash(path.relative(srcDir, file))
|
|
|
|
const relativePath = slash(path.relative(srcDir, file))
|
|
|
|
|
|
|
|
|
|
|
|
const cacheKey = JSON.stringify({ src, ts, relativePath })
|
|
|
|
const cacheKey = JSON.stringify({ src, ts, relativePath })
|
|
|
|
if (isBuild || options.cache !== false) {
|
|
|
|
if (options.cache !== false) {
|
|
|
|
const cached = cache.get(cacheKey)
|
|
|
|
const cached = cache.get(cacheKey)
|
|
|
|
if (cached) {
|
|
|
|
if (cached) {
|
|
|
|
debug(`[cache hit] ${relativePath}`)
|
|
|
|
debug(`[cache hit] ${relativePath}`)
|
|
|
@ -177,15 +176,9 @@ export async function createMarkdownToVueRenderFn(
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return siteConfig.ignoreDeadLinks.some((ignore) => {
|
|
|
|
return siteConfig.ignoreDeadLinks.some((ignore) => {
|
|
|
|
if (typeof ignore === 'string') {
|
|
|
|
if (typeof ignore === 'string') return url === ignore
|
|
|
|
return url === ignore
|
|
|
|
if (ignore instanceof RegExp) return ignore.test(url)
|
|
|
|
}
|
|
|
|
if (typeof ignore === 'function') return ignore(url, fileOrig)
|
|
|
|
if (ignore instanceof RegExp) {
|
|
|
|
|
|
|
|
return ignore.test(url)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (typeof ignore === 'function') {
|
|
|
|
|
|
|
|
return ignore(url, fileOrig)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return false
|
|
|
|
return false
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -198,6 +191,7 @@ export async function createMarkdownToVueRenderFn(
|
|
|
|
|
|
|
|
|
|
|
|
url = url.replace(/[?#].*$/, '').replace(/\.(html|md)$/, '')
|
|
|
|
url = url.replace(/[?#].*$/, '').replace(/\.(html|md)$/, '')
|
|
|
|
if (url.endsWith('/')) url += `index`
|
|
|
|
if (url.endsWith('/')) url += `index`
|
|
|
|
|
|
|
|
|
|
|
|
let resolved = decodeURIComponent(
|
|
|
|
let resolved = decodeURIComponent(
|
|
|
|
slash(
|
|
|
|
slash(
|
|
|
|
url.startsWith('/')
|
|
|
|
url.startsWith('/')
|
|
|
@ -207,6 +201,7 @@ export async function createMarkdownToVueRenderFn(
|
|
|
|
)
|
|
|
|
)
|
|
|
|
resolved =
|
|
|
|
resolved =
|
|
|
|
siteConfig?.rewrites.inv[resolved + '.md']?.slice(0, -3) || resolved
|
|
|
|
siteConfig?.rewrites.inv[resolved + '.md']?.slice(0, -3) || resolved
|
|
|
|
|
|
|
|
|
|
|
|
if (
|
|
|
|
if (
|
|
|
|
!pages.includes(resolved) &&
|
|
|
|
!pages.includes(resolved) &&
|
|
|
|
!fs.existsSync(path.resolve(dir, publicDir, `${resolved}.html`)) &&
|
|
|
|
!fs.existsSync(path.resolve(dir, publicDir, `${resolved}.html`)) &&
|
|
|
@ -239,12 +234,7 @@ export async function createMarkdownToVueRenderFn(
|
|
|
|
for (const fn of transformPageData) {
|
|
|
|
for (const fn of transformPageData) {
|
|
|
|
if (fn) {
|
|
|
|
if (fn) {
|
|
|
|
const dataToMerge = await fn(pageData, { siteConfig })
|
|
|
|
const dataToMerge = await fn(pageData, { siteConfig })
|
|
|
|
if (dataToMerge) {
|
|
|
|
if (dataToMerge) pageData = { ...pageData, ...dataToMerge }
|
|
|
|
pageData = {
|
|
|
|
|
|
|
|
...pageData,
|
|
|
|
|
|
|
|
...dataToMerge
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -260,15 +250,8 @@ export async function createMarkdownToVueRenderFn(
|
|
|
|
|
|
|
|
|
|
|
|
debug(`[render] ${file} in ${Date.now() - start}ms.`)
|
|
|
|
debug(`[render] ${file} in ${Date.now() - start}ms.`)
|
|
|
|
|
|
|
|
|
|
|
|
const result = {
|
|
|
|
const result = { vueSrc, pageData, deadLinks, includes }
|
|
|
|
vueSrc,
|
|
|
|
if (options.cache !== false) cache.set(cacheKey, result)
|
|
|
|
pageData,
|
|
|
|
|
|
|
|
deadLinks,
|
|
|
|
|
|
|
|
includes
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (isBuild || options.cache !== false) {
|
|
|
|
|
|
|
|
cache.set(cacheKey, result)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return result
|
|
|
|
return result
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|