From 41f74e887a5e3c3c502105f13188a7b3f88e3f50 Mon Sep 17 00:00:00 2001 From: Simon Date: Thu, 16 Jun 2022 14:26:18 +0200 Subject: [PATCH] (feat) support node16/nodenext #1522 --- .../src/plugins/typescript/service.ts | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/packages/language-server/src/plugins/typescript/service.ts b/packages/language-server/src/plugins/typescript/service.ts index 3e964da5b..91c180ebc 100644 --- a/packages/language-server/src/plugins/typescript/service.ts +++ b/packages/language-server/src/plugins/typescript/service.ts @@ -292,8 +292,6 @@ async function createLanguageService( const forcedCompilerOptions: ts.CompilerOptions = { allowNonTsExtensions: true, target: ts.ScriptTarget.Latest, - module: ts.ModuleKind.ESNext, - moduleResolution: ts.ModuleResolutionKind.NodeJs, allowJs: true, noEmit: true, declaration: false, @@ -344,6 +342,25 @@ async function createLanguageService( ...parsedConfig.options, ...forcedCompilerOptions }; + if ( + !compilerOptions.moduleResolution || + compilerOptions.moduleResolution === ts.ModuleResolutionKind.Classic + ) { + compilerOptions.moduleResolution = ts.ModuleResolutionKind.NodeJs; + } + if ( + !compilerOptions.module || + [ + ts.ModuleKind.AMD, + ts.ModuleKind.CommonJS, + ts.ModuleKind.ES2015, + ts.ModuleKind.None, + ts.ModuleKind.System, + ts.ModuleKind.UMD + ].includes(compilerOptions.module) + ) { + compilerOptions.module = ts.ModuleKind.ESNext; + } // detect which JSX namespace to use (svelte | svelteNative) if not specified or not compatible if (!compilerOptions.jsxFactory || !compilerOptions.jsxFactory.startsWith('svelte')) {