diff --git a/packages/plugin-vue/src/compiler.ts b/packages/plugin-vue/src/compiler.ts index 1051eba0..1449fea9 100644 --- a/packages/plugin-vue/src/compiler.ts +++ b/packages/plugin-vue/src/compiler.ts @@ -10,9 +10,7 @@ import type * as _compiler from 'vue/compiler-sfc' export function resolveCompiler(root: string): typeof _compiler { // resolve from project root first, then fallback to peer dep (if any) - const compiler = - tryRequire('vue/compiler-sfc', root) || tryRequire('vue/compiler-sfc') - + const compiler = tryResolveCompiler(root) || tryResolveCompiler() if (!compiler) { throw new Error( `Failed to resolve vue/compiler-sfc.\n` + @@ -24,6 +22,14 @@ export function resolveCompiler(root: string): typeof _compiler { return compiler } +function tryResolveCompiler(root?: string) { + const vueMeta = tryRequire('vue/package.json', root) + // make sure to check the version is 3+ since 2.7 now also has vue/compiler-sfc + if (vueMeta && vueMeta.version.split('.')[0] >= 3) { + return tryRequire('vue/compiler-sfc', root) + } +} + const _require = createRequire(import.meta.url) function tryRequire(id: string, from?: string) { try {