From aa496bc38a43ac323bd9b67c751aa41d902bc48e Mon Sep 17 00:00:00 2001 From: meteorlxy Date: Mon, 17 Feb 2020 18:53:36 +0800 Subject: [PATCH 1/2] fix($core): normalize theme path with Layout.vue correctly (close #2178) --- packages/@vuepress/core/lib/node/loadTheme.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/@vuepress/core/lib/node/loadTheme.js b/packages/@vuepress/core/lib/node/loadTheme.js index eec97897e0..7ddfe3edfc 100755 --- a/packages/@vuepress/core/lib/node/loadTheme.js +++ b/packages/@vuepress/core/lib/node/loadTheme.js @@ -60,8 +60,15 @@ module.exports = function loadTheme (ctx) { } function normalizeThemePath (resolved) { - const { entry, fromDep } = resolved + const { entry, name, fromDep } = resolved if (fromDep) { + const packageRoot = require.resolve(`${name}/package.json`) + const { main } = require(packageRoot) + if (main.endsWith('.vue')) { + // For those cases that "main" field is set to .vue file + // e.g. `layouts/Layout.vue` + return parse(packageRoot).dir + } return parse(require.resolve(entry)).dir } else if (entry.endsWith('.js') || entry.endsWith('.vue')) { return parse(entry).dir From 658f00767d519c1904f576e84b523036ca56f6c1 Mon Sep 17 00:00:00 2001 From: meteorlxy Date: Mon, 17 Feb 2020 21:57:28 +0800 Subject: [PATCH 2/2] tweaks --- packages/@vuepress/core/lib/node/loadTheme.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@vuepress/core/lib/node/loadTheme.js b/packages/@vuepress/core/lib/node/loadTheme.js index 7ddfe3edfc..e93d6802f0 100755 --- a/packages/@vuepress/core/lib/node/loadTheme.js +++ b/packages/@vuepress/core/lib/node/loadTheme.js @@ -63,7 +63,7 @@ function normalizeThemePath (resolved) { const { entry, name, fromDep } = resolved if (fromDep) { const packageRoot = require.resolve(`${name}/package.json`) - const { main } = require(packageRoot) + const { main = '' } = require(packageRoot) if (main.endsWith('.vue')) { // For those cases that "main" field is set to .vue file // e.g. `layouts/Layout.vue`