From f82ea4d18c33067024507f480757a2d9569bc4d1 Mon Sep 17 00:00:00 2001 From: Shigma <1700011071@pku.edu.cn> Date: Sat, 16 Mar 2019 23:46:54 +0800 Subject: [PATCH 1/6] better layout check --- .../@vuepress/core/lib/node/theme-api/index.js | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/packages/@vuepress/core/lib/node/theme-api/index.js b/packages/@vuepress/core/lib/node/theme-api/index.js index 2ea634e1ed..6e1b312f37 100644 --- a/packages/@vuepress/core/lib/node/theme-api/index.js +++ b/packages/@vuepress/core/lib/node/theme-api/index.js @@ -2,8 +2,9 @@ const { logger, fs, path: { resolve }} = require('@vuepress/shared-utils') const readdirSync = dir => fs.existsSync(dir) && fs.readdirSync(dir) || [] module.exports = class ThemeAPI { - constructor (theme, parentTheme) { + constructor (theme, parentTheme, context) { this.theme = theme + this.context = context this.parentTheme = parentTheme || {} this.existsParentTheme = !!this.parentTheme.path this.vuepressPlugin = { @@ -69,9 +70,9 @@ module.exports = class ThemeAPI { // built-in named layout or not. const layoutComponentMap = resolveSFCs(layoutDirs) - const { Layout = {}, NotFound = {}} = layoutComponentMap + const { Layout, NotFound } = layoutComponentMap // layout component does not exist. - if (!Layout || !fs.existsSync(Layout.path)) { + if (!Layout) { const fallbackLayoutPath = resolve(__dirname, 'Layout.fallback.vue') layoutComponentMap.Layout = { filename: 'Layout.vue', @@ -79,12 +80,12 @@ module.exports = class ThemeAPI { path: fallbackLayoutPath, isInternal: true } - logger.warn( - `[vuepress] Cannot resolve Layout.vue file in \n ${Layout.path},` - + `fallback to default layout: ${fallbackLayoutPath}` - ) + if (this.context.globalLayout !== this.context.getLibFilePath('client/components/GlobalLayout.vue')) { + // doesn't expect a Layout.vue when a custom GlobalLayout is registered + logger.warn(`[vuepress] Cannot find Layout.vue, fallback to default layout.`) + } } - if (!NotFound || !fs.existsSync(NotFound.path)) { + if (!NotFound) { layoutComponentMap.NotFound = { filename: 'NotFound.vue', componentName: 'NotFound', From d94fe3f510d3d93d3ae2e4d0f8871d40b8e81054 Mon Sep 17 00:00:00 2001 From: Shigma <1700011071@pku.edu.cn> Date: Sat, 16 Mar 2019 23:51:21 +0800 Subject: [PATCH 2/6] enhance resolve SFCs --- .../core/lib/node/theme-api/index.js | 33 ++++++++----------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/packages/@vuepress/core/lib/node/theme-api/index.js b/packages/@vuepress/core/lib/node/theme-api/index.js index 6e1b312f37..6cd488f831 100644 --- a/packages/@vuepress/core/lib/node/theme-api/index.js +++ b/packages/@vuepress/core/lib/node/theme-api/index.js @@ -105,25 +105,20 @@ module.exports = class ThemeAPI { */ function resolveSFCs (dirs) { - return dirs.map( - layoutDir => readdirSync(layoutDir) - .filter(filename => filename.endsWith('.vue')) - .map(filename => { - const componentName = getComponentName(filename) - return { - filename, - componentName, - isInternal: isInternal(componentName), - path: resolve(layoutDir, filename) - } - }) - ).reduce((arr, next) => { - arr.push(...next) - return arr - }, []).reduce((map, component) => { - map[component.componentName] = component - return map - }, {}) + const map = {} + for (const dir of dirs) { + for (const filename of readdirSync(dir)) { + if (!filename.endsWith('.vue')) continue + const componentName = getComponentName(filename) + map[componentName] = { + filename, + componentName, + isInternal: isInternal(componentName), + path: resolve(dir, filename) + } + } + } + return map } /** From f782605f539c1b423ea25cac25ea3608c2a9423d Mon Sep 17 00:00:00 2001 From: Shigma <1700011071@pku.edu.cn> Date: Sat, 16 Mar 2019 23:57:05 +0800 Subject: [PATCH 3/6] Update index.js --- packages/@vuepress/core/lib/node/theme-api/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@vuepress/core/lib/node/theme-api/index.js b/packages/@vuepress/core/lib/node/theme-api/index.js index 6cd488f831..403ba9e5ef 100644 --- a/packages/@vuepress/core/lib/node/theme-api/index.js +++ b/packages/@vuepress/core/lib/node/theme-api/index.js @@ -81,7 +81,7 @@ module.exports = class ThemeAPI { isInternal: true } if (this.context.globalLayout !== this.context.getLibFilePath('client/components/GlobalLayout.vue')) { - // doesn't expect a Layout.vue when a custom GlobalLayout is registered + // don't expect a Layout.vue when a custom GlobalLayout is registered logger.warn(`[vuepress] Cannot find Layout.vue, fallback to default layout.`) } } From ab2d3b0dbb915dd7649f079ad3dda888abf2c905 Mon Sep 17 00:00:00 2001 From: Shigma <1700011071@pku.edu.cn> Date: Sun, 17 Mar 2019 14:08:49 +0800 Subject: [PATCH 4/6] Revert "enhance resolve SFCs" This reverts commit d94fe3f510d3d93d3ae2e4d0f8871d40b8e81054. --- .../core/lib/node/theme-api/index.js | 33 +++++++++++-------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/packages/@vuepress/core/lib/node/theme-api/index.js b/packages/@vuepress/core/lib/node/theme-api/index.js index 403ba9e5ef..af1300b141 100644 --- a/packages/@vuepress/core/lib/node/theme-api/index.js +++ b/packages/@vuepress/core/lib/node/theme-api/index.js @@ -105,20 +105,25 @@ module.exports = class ThemeAPI { */ function resolveSFCs (dirs) { - const map = {} - for (const dir of dirs) { - for (const filename of readdirSync(dir)) { - if (!filename.endsWith('.vue')) continue - const componentName = getComponentName(filename) - map[componentName] = { - filename, - componentName, - isInternal: isInternal(componentName), - path: resolve(dir, filename) - } - } - } - return map + return dirs.map( + layoutDir => readdirSync(layoutDir) + .filter(filename => filename.endsWith('.vue')) + .map(filename => { + const componentName = getComponentName(filename) + return { + filename, + componentName, + isInternal: isInternal(componentName), + path: resolve(layoutDir, filename) + } + }) + ).reduce((arr, next) => { + arr.push(...next) + return arr + }, []).reduce((map, component) => { + map[component.componentName] = component + return map + }, {}) } /** From bebef75b8e9cd09574f5e15844f0fa47b0a8a36d Mon Sep 17 00:00:00 2001 From: giraud florent Date: Sat, 7 Sep 2019 00:47:28 -0400 Subject: [PATCH 5/6] fix(layout): fix broken class content --- packages/@vuepress/theme-default/components/Page.vue | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/@vuepress/theme-default/components/Page.vue b/packages/@vuepress/theme-default/components/Page.vue index 0fff66a466..1346299a33 100644 --- a/packages/@vuepress/theme-default/components/Page.vue +++ b/packages/@vuepress/theme-default/components/Page.vue @@ -2,7 +2,7 @@
- + @@ -22,6 +22,8 @@ export default {