diff --git a/packages/@vuepress/core/lib/node/loadTheme.js b/packages/@vuepress/core/lib/node/loadTheme.js index eec97897e0..e93d6802f0 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