diff --git a/.changeset/rare-buttons-argue.md b/.changeset/rare-buttons-argue.md
new file mode 100644
index 000000000..f724b00c0
--- /dev/null
+++ b/.changeset/rare-buttons-argue.md
@@ -0,0 +1,5 @@
+---
+'@sveltejs/vite-plugin-svelte': patch
+---
+
+fix(compile): correctly determine script lang in files where a comment precedes the script tag
diff --git a/packages/vite-plugin-svelte/__tests__/compile.spec.js b/packages/vite-plugin-svelte/__tests__/compile.spec.js
index a5e82701d..c9c1282fa 100644
--- a/packages/vite-plugin-svelte/__tests__/compile.spec.js
+++ b/packages/vite-plugin-svelte/__tests__/compile.spec.js
@@ -45,5 +45,36 @@ describe('createCompileSvelte', () => {
);
expect(output.compiled.js.code).not.toContain('/* @__PURE__ */\n');
});
+
+ it('detects script lang', async () => {
+ const code = `
+
+
+
{x}
`;
+
+ const compileSvelte = createCompileSvelte(options);
+ const output = await compileSvelte(
+ {
+ cssId: 'svelte-xxxxx',
+ query: {},
+ raw: false,
+ ssr: false,
+ timestamp: Date.now(),
+ id: 'id',
+ filename: '/some/File.svelte',
+ normalizedFilename: 'some/File.svelte'
+ },
+ code,
+ {}
+ );
+
+ expect(output.lang).toBe('ts');
+ });
});
});
diff --git a/packages/vite-plugin-svelte/src/utils/compile.js b/packages/vite-plugin-svelte/src/utils/compile.js
index 38994439a..3218a0610 100644
--- a/packages/vite-plugin-svelte/src/utils/compile.js
+++ b/packages/vite-plugin-svelte/src/utils/compile.js
@@ -16,7 +16,7 @@ import { isSvelte5 } from './svelte-version.js';
// which is closer to the other regexes in at least not falling into commented script
// but ideally would be shared exactly with svelte and other tools that use it
const scriptLangRE =
- /|