From c10295f40b4bb2e2943abddad739f13c61b56698 Mon Sep 17 00:00:00 2001 From: johnsoncodehk Date: Mon, 21 Mar 2022 22:29:46 +0800 Subject: [PATCH] fix: ignore css module type-checking on vue-tsc close #1089 --- packages/typescript-vue-plugin/src/index.ts | 1 + packages/vue-language-service/src/documentService.ts | 1 + packages/vue-language-service/src/languageFuatures/rename.ts | 1 - packages/vue-language-service/src/languageService.ts | 1 + packages/vue-tsc/src/proxy.ts | 1 + packages/vue-typescript/src/typescriptRuntime.ts | 2 ++ packages/vue-typescript/src/use/useSfcTemplateScript.ts | 3 ++- packages/vue-typescript/src/vueFile.ts | 2 ++ 8 files changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/typescript-vue-plugin/src/index.ts b/packages/typescript-vue-plugin/src/index.ts index dd9e2438b..84ed60869 100644 --- a/packages/typescript-vue-plugin/src/index.ts +++ b/packages/typescript-vue-plugin/src/index.ts @@ -27,6 +27,7 @@ const init: ts.server.PluginModuleFactory = (modules) => { const tsRuntime = vue.createTypeScriptRuntime({ typescript: ts, vueCompilerOptions, + baseCssModuleType: 'any', getCssClasses: () => ({}), getCssVBindRanges: () => [], vueLsHost: proxyHost.host, diff --git a/packages/vue-language-service/src/documentService.ts b/packages/vue-language-service/src/documentService.ts index e23aeb746..1cf16224a 100644 --- a/packages/vue-language-service/src/documentService.ts +++ b/packages/vue-language-service/src/documentService.ts @@ -154,6 +154,7 @@ export function getDocumentService( vueTsPlugins, {}, context.typescript, + 'Record', stylesheetExtra.getCssVBindRanges, stylesheetExtra.getCssClasses, ); diff --git a/packages/vue-language-service/src/languageFuatures/rename.ts b/packages/vue-language-service/src/languageFuatures/rename.ts index 5d31bb4d6..12a4c0368 100644 --- a/packages/vue-language-service/src/languageFuatures/rename.ts +++ b/packages/vue-language-service/src/languageFuatures/rename.ts @@ -4,7 +4,6 @@ import { languageFeatureWorker } from '../utils/featureWorkers'; import * as dedupe from '../utils/dedupe'; import { TextDocument } from 'vscode-languageserver-textdocument'; import { VueDocuments } from '../vueDocuments'; -import { EmbeddedFileMappingData } from '@volar/vue-code-gen'; export function register(context: LanguageServiceRuntimeContext) { diff --git a/packages/vue-language-service/src/languageService.ts b/packages/vue-language-service/src/languageService.ts index 738dd4a3d..9d3094d91 100644 --- a/packages/vue-language-service/src/languageService.ts +++ b/packages/vue-language-service/src/languageService.ts @@ -99,6 +99,7 @@ export function createLanguageService( const tsRuntime = createTypeScriptRuntime({ typescript: ts, vueCompilerOptions, + baseCssModuleType: 'Record', getCssClasses: ef => stylesheetExtra.getCssClasses(ef), getCssVBindRanges: ef => stylesheetExtra.getCssVBindRanges(ef), vueLsHost: vueLsHost, diff --git a/packages/vue-tsc/src/proxy.ts b/packages/vue-tsc/src/proxy.ts index a3a95ea89..888e292a7 100644 --- a/packages/vue-tsc/src/proxy.ts +++ b/packages/vue-tsc/src/proxy.ts @@ -39,6 +39,7 @@ export function createProgramProxy( }; const tsRuntime = createTypeScriptRuntime({ typescript: ts, + baseCssModuleType: 'any', getCssClasses: () => ({}), getCssVBindRanges: () => [], vueCompilerOptions, diff --git a/packages/vue-typescript/src/typescriptRuntime.ts b/packages/vue-typescript/src/typescriptRuntime.ts index b1bf84135..54f4cc598 100644 --- a/packages/vue-typescript/src/typescriptRuntime.ts +++ b/packages/vue-typescript/src/typescriptRuntime.ts @@ -22,6 +22,7 @@ export type TypeScriptRuntime = ReturnType; export function createTypeScriptRuntime(options: { typescript: typeof import('typescript/lib/tsserverlibrary'), vueCompilerOptions: VueCompilerOptions, + baseCssModuleType: string, getCssVBindRanges: (cssEmbeddeFile: EmbeddedFile) => TextRange[], getCssClasses: (cssEmbeddeFile: EmbeddedFile) => Record, vueLsHost: LanguageServiceHost, @@ -320,6 +321,7 @@ export function createTypeScriptRuntime(options: { plugins, options.vueCompilerOptions, options.typescript, + options.baseCssModuleType, options.getCssVBindRanges, options.getCssClasses, )); diff --git a/packages/vue-typescript/src/use/useSfcTemplateScript.ts b/packages/vue-typescript/src/use/useSfcTemplateScript.ts index 28b720448..05880221c 100644 --- a/packages/vue-typescript/src/use/useSfcTemplateScript.ts +++ b/packages/vue-typescript/src/use/useSfcTemplateScript.ts @@ -29,6 +29,7 @@ export function useSfcTemplateScript( sfcStyles: ReturnType<(typeof import('./useSfcStyles'))['useSfcStyles']>['files'], scriptLang: Ref, compilerOptions: VueCompilerOptions, + baseCssModuleType: string, getCssVBindRanges: (cssEmbeddeFile: EmbeddedFile) => TextRange[], getCssClasses: (cssEmbeddeFile: EmbeddedFile) => Record, ) { @@ -97,7 +98,7 @@ export function useSfcTemplateScript( const cssModuleMappingsArr: ReturnType[] = []; for (const moduleName in cssModuleClasses.value) { const moduleClasses = cssModuleClasses.value[moduleName]; - codeGen.addText(`declare var ${moduleName}: Record & {\n`); + codeGen.addText(`declare var ${moduleName}: ${baseCssModuleType} & {\n`); cssModuleMappingsArr.push(writeCssClassProperties(moduleClasses, true, 'string', false)); codeGen.addText('};\n'); } diff --git a/packages/vue-typescript/src/vueFile.ts b/packages/vue-typescript/src/vueFile.ts index 118e1dee4..815adace3 100644 --- a/packages/vue-typescript/src/vueFile.ts +++ b/packages/vue-typescript/src/vueFile.ts @@ -79,6 +79,7 @@ export function createVueFile( plugins: VueLanguagePlugin[], compilerOptions: VueCompilerOptions, ts: typeof import('typescript/lib/tsserverlibrary'), + baseCssModuleType: string, getCssVBindRanges: (cssEmbeddeFile: EmbeddedFile) => TextRange[], getCssClasses: (cssEmbeddeFile: EmbeddedFile) => Record, ) { @@ -210,6 +211,7 @@ export function createVueFile( sfcStyles.files, sfcScriptForScriptLs.lang, compilerOptions, + baseCssModuleType, getCssVBindRanges, getCssClasses, );