Skip to content

Commit a848b46

Browse files
committed
fix: requested changes
1 parent 8d5c5c8 commit a848b46

File tree

1 file changed

+25
-1
lines changed

1 file changed

+25
-1
lines changed

packages/vue-language-core/src/languageModule.ts

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ export function createLanguage(
5252
vueCompilerOptions,
5353
codegenStack,
5454
);
55+
patchResolveModuleNames(ts, vueCompilerOptions);
56+
5557
const sharedTypesSnapshot = ts.ScriptSnapshot.fromString(sharedTypes.getTypesCode(vueCompilerOptions));
5658
const languageModule: Language = {
5759
createVirtualFile(fileName, snapshot, languageId) {
@@ -108,7 +110,7 @@ export function createLanguage(
108110
) {
109111
return moduleLiterals.map((moduleLiteral) => {
110112
let moduleName = moduleLiteral.text;
111-
if (sourceFile.impliedNodeFormat === ts.ModuleKind.ESNext && moduleName.endsWith('.vue')) {
113+
if (sourceFile.impliedNodeFormat === ts.ModuleKind.ESNext && vueCompilerOptions.extensions.some(ext => moduleName.endsWith(ext))) {
112114
moduleName = `${moduleName}.js`;
113115
}
114116
return ts.resolveModuleName(
@@ -146,3 +148,25 @@ export function createLanguages(
146148
...vueCompilerOptions.experimentalAdditionalLanguageModules?.map(module => require(module)) ?? [],
147149
];
148150
}
151+
152+
function patchResolveModuleNames(
153+
ts: typeof import('typescript/lib/tsserverlibrary'),
154+
vueCompilerOptions: VueCompilerOptions,
155+
) {
156+
try {
157+
// from https://github.com/vuejs/language-tools/pull/1543
158+
if (!((ts as any).__vuePatchResolveModuleNames)) {
159+
(ts as any).__vuePatchResolveModuleNames = true;
160+
const resolveModuleNames = ts.resolveModuleName;
161+
ts.resolveModuleName = (...args) => {
162+
if (args[6] === ts.ModuleKind.ESNext && vueCompilerOptions.extensions.some(ext => args[0].endsWith(ext))) {
163+
args[6] = ts.ModuleKind.CommonJS;
164+
}
165+
return resolveModuleNames(...args);
166+
};
167+
}
168+
}
169+
catch (e) {
170+
// console.warn('[volar] patchResolveModuleNames failed', e);
171+
}
172+
}

0 commit comments

Comments
 (0)