diff --git a/packages/component-meta/lib/base.ts b/packages/component-meta/lib/base.ts index 4f13a1977d..8cda1c706e 100644 --- a/packages/component-meta/lib/base.ts +++ b/packages/component-meta/lib/base.ts @@ -71,6 +71,7 @@ function createCheckerWorker( let projectVersion = 0; const scriptSnapshots = new Map(); + const resolvedVueOptions = vue.resolveVueCompilerOptions(parsedCommandLine.vueOptions); const _host: vue.TypeScriptProjectHost = { getCurrentDirectory: () => rootPath, getProjectVersion: () => projectVersion.toString(), @@ -86,11 +87,16 @@ function createCheckerWorker( } return scriptSnapshots.get(fileName); }, - getLanguageId: vue.resolveCommonLanguageId, + getLanguageId: fileName => { + if (resolvedVueOptions.extensions.some(ext => fileName.endsWith(ext))) { + return 'vue'; + } + return vue.resolveCommonLanguageId(fileName); + }, }; return { - ...baseCreate(ts, configFileName, _host, vue.resolveVueCompilerOptions(parsedCommandLine.vueOptions), checkerOptions, globalComponentName), + ...baseCreate(ts, configFileName, _host, resolvedVueOptions, checkerOptions, globalComponentName), updateFile(fileName: string, text: string) { fileName = fileName.replace(windowsPathReg, '/'); scriptSnapshots.set(fileName, ts.ScriptSnapshot.fromString(text)); diff --git a/packages/typescript-plugin/index.ts b/packages/typescript-plugin/index.ts index 702b2839e8..e6f2d39516 100644 --- a/packages/typescript-plugin/index.ts +++ b/packages/typescript-plugin/index.ts @@ -57,7 +57,11 @@ function createLanguageServicePlugin(): ts.server.PluginModuleFactory { fileName => { const snapshot = getScriptSnapshot(fileName); if (snapshot) { - files.set(fileName, resolveCommonLanguageId(fileName), snapshot); + let languageId = resolveCommonLanguageId(fileName); + if (extensions.some(ext => fileName.endsWith(ext))) { + languageId = 'vue'; + } + files.set(fileName, languageId, snapshot); } else { files.delete(fileName); @@ -219,6 +223,10 @@ function createLanguageServicePlugin(): ts.server.PluginModuleFactory { ) { const oldFiles = externalFiles.get(project); const newFiles = new Set(searchExternalFiles(ts, project, projectExternalFileExtensions.get(project)!)); + console.log('volar-search vue files'); + for (const file of newFiles) { + console.log(file); + } externalFiles.set(project, newFiles); if (oldFiles && !twoSetsEqual(oldFiles, newFiles)) { for (const oldFile of oldFiles) {