perf: use config.publicDir replace 'public'

pull/290/head
YunYouJun 4 years ago
parent 835ea64b63
commit 37e4521618

@ -25,7 +25,11 @@ export function createMarkdownToVueRenderFn(
const md = createMarkdownRenderer(root, options)
pages = pages.map((p) => slash(p.replace(/\.md$/, '')))
return (src: string, file: string): MarkdownCompileResult => {
return (
src: string,
file: string,
publicDir: string
): MarkdownCompileResult => {
const relativePath = slash(path.relative(root, file))
const cached = cache.get(src)
@ -58,7 +62,7 @@ export function createMarkdownToVueRenderFn(
)
if (
!pages.includes(resolved) &&
!fs.existsSync(path.resolve(dir, 'public', `${resolved}.html`))
!fs.existsSync(path.resolve(dir, publicDir, `${resolved}.html`))
) {
console.warn(
chalk.yellow(

@ -1,5 +1,5 @@
import path from 'path'
import { Plugin } from 'vite'
import { Plugin, ResolvedConfig } from 'vite'
import { SiteConfig, resolveSiteData } from './config'
import { createMarkdownToVueRenderFn } from './markdownToVue'
import { APP_PATH, SITE_DATA_REQUEST_PATH } from './alias'
@ -37,10 +37,15 @@ export function createVitePressPlugin(
let siteData = site
let hasDeadLinks = false
let config: ResolvedConfig
const vitePressPlugin: Plugin = {
name: 'vitepress',
configResolved(resolvedConfig) {
config = resolvedConfig
},
config() {
return {
resolve: {
@ -72,7 +77,7 @@ export function createVitePressPlugin(
transform(code, id) {
if (id.endsWith('.md')) {
// transform .md files into vueSrc so plugin-vue can handle it
const { vueSrc, deadLinks } = markdownToVue(code, id)
const { vueSrc, deadLinks } = markdownToVue(code, id, config.publicDir)
if (deadLinks.length) {
hasDeadLinks = true
}
@ -176,7 +181,11 @@ export function createVitePressPlugin(
// hot reload .md files as .vue files
if (file.endsWith('.md')) {
const content = await read()
const { pageData, vueSrc } = markdownToVue(content, file)
const { pageData, vueSrc } = markdownToVue(
content,
file,
config.publicDir
)
// notify the client to update page data
server.ws.send({

Loading…
Cancel
Save