diff --git a/lib/prepare.js b/lib/prepare.js index 2c29b737612acb29fba94a474868a19385d8cf2e..acd7e82f16ad0a2a927860cfe64353d26e1599ea 100644 --- a/lib/prepare.js +++ b/lib/prepare.js @@ -1,8 +1,9 @@ -const fs = require('fs-extra') const path = require('path') +const fs = require('fs-extra') const globby = require('globby') -const yaml = require('yaml-front-matter') const yamlParser = require('js-yaml') +const yaml = require('yaml-front-matter') +const createMarkdown = require('./markdown') const tempPath = path.resolve(__dirname, 'app/.temp') const { inferTitle, extractHeaders } = require('./util') @@ -120,7 +121,8 @@ async function resolveOptions (sourceDir) { pagesData: null, themePath: null, notFoundPath: null, - useDefaultTheme + useDefaultTheme, + markdown: createMarkdown(siteConfig) } if (useDefaultTheme) { @@ -171,7 +173,11 @@ async function resolveOptions (sourceDir) { if (title) { data.title = title } - const headers = extractHeaders(frontmatter.__content, ['h2', 'h3']) + const headers = extractHeaders( + frontmatter.__content, + ['h2', 'h3'], + options.markdown + ) if (headers.length) { data.headers = headers } diff --git a/lib/util/index.js b/lib/util/index.js index d6ac59f3985ab4f0ba33723ff0f715d9789c233d..0545fe0fb273476b97486d8270bdfd94461c7684 100644 --- a/lib/util/index.js +++ b/lib/util/index.js @@ -45,9 +45,8 @@ exports.parseFrontmatter = content => { const LRU = require('lru-cache') const cache = LRU({ max: 1000 }) -const md = require('../markdown')() -exports.extractHeaders = (content, include = []) => { +exports.extractHeaders = (content, include = [], md) => { const key = content + include.join(',') const hit = cache.get(key) if (hit) { diff --git a/lib/webpack/createBaseConfig.js b/lib/webpack/createBaseConfig.js index 36d042fcc3a57193699fcdb2dbd80923ffb3c498..70cb6d5d60f6c0fdf0afd4d0e040094039a6905d 100644 --- a/lib/webpack/createBaseConfig.js +++ b/lib/webpack/createBaseConfig.js @@ -6,9 +6,9 @@ module.exports = function createBaseConfig ({ outDir, publicPath, themePath, - notFoundPath + notFoundPath, + markdown }, { debug } = {}, isServer) { - const markdown = require('../markdown')(siteConfig) const Config = require('webpack-chain') const { VueLoaderPlugin } = require('vue-loader') const CSSExtractPlugin = require('mini-css-extract-plugin') diff --git a/lib/webpack/markdownLoader.js b/lib/webpack/markdownLoader.js index f73f7b74c13c7a90821167ec9b2146781741b060..a6f2c3d2b024d5ed387e8bf9b9d9de339085ee21 100644 --- a/lib/webpack/markdownLoader.js +++ b/lib/webpack/markdownLoader.js @@ -30,7 +30,7 @@ module.exports = function (src) { if (!isProd && !isServer) { const inferredTitle = inferTitle(frontmatter) - const headers = extractHeaders(content, ['h2', 'h3']) + const headers = extractHeaders(content, ['h2', 'h3'], markdown) delete frontmatter.__content // diff frontmatter and title, since they are not going to be part of the