diff --git a/packages/vite/src/node/__tests__/fixtures/scan-svelte/svelte-snippet.svelte b/packages/vite/src/node/__tests__/fixtures/scan-svelte/svelte-snippet.svelte
new file mode 100644
index 00000000000000..dc5c8ed3c3993b
--- /dev/null
+++ b/packages/vite/src/node/__tests__/fixtures/scan-svelte/svelte-snippet.svelte
@@ -0,0 +1,7 @@
+
+
+{#snippet mySnippet()}
+ snippet!
+{/snippet}
diff --git a/packages/vite/src/node/__tests__/scan.spec.ts b/packages/vite/src/node/__tests__/scan.spec.ts
index d09b68d3ead76a..b94cbf05761b11 100644
--- a/packages/vite/src/node/__tests__/scan.spec.ts
+++ b/packages/vite/src/node/__tests__/scan.spec.ts
@@ -1,10 +1,22 @@
import path from 'node:path'
import { describe, expect, test } from 'vitest'
-import { commentRE, importsRE, scriptRE } from '../optimizer/scan'
+import {
+ ScanEnvironment,
+ commentRE,
+ importsRE,
+ scanImports,
+ scriptRE,
+} from '../optimizer/scan'
import { multilineCommentsRE, singlelineCommentsRE } from '../utils'
-import { createServer, createServerModuleRunner } from '..'
+import { createServer, createServerModuleRunner, resolveConfig } from '..'
describe('optimizer-scan:script-test', () => {
+ const execScriptRE = (input: string) => {
+ const result = scriptRE.exec(input)
+ scriptRE.lastIndex = 0
+ return result
+ }
+
const scriptContent = `import { defineComponent } from 'vue'
import ScriptDevelopPane from './ScriptDevelopPane.vue';
export default defineComponent({
@@ -14,15 +26,13 @@ describe('optimizer-scan:script-test', () => {
})`
test('component return value test', () => {
- scriptRE.lastIndex = 0
- const [, tsOpenTag, tsContent] = scriptRE.exec(
+ const [, tsOpenTag, tsContent] = execScriptRE(
``,
)!
expect(tsOpenTag).toEqual('`,
)!
expect(openTag).toEqual(' -->
@@ -41,35 +50,26 @@ describe('optimizer-scan:script-test', () => {
})
test('components with script keyword test', () => {
- scriptRE.lastIndex = 0
- let ret = scriptRE.exec(``)
+ let ret = execScriptRE(``)
expect(ret).toBe(null)
- scriptRE.lastIndex = 0
- ret = scriptRE.exec(
+ ret = execScriptRE(
``,
)
expect(ret).toBe(null)
- scriptRE.lastIndex = 0
- ret = scriptRE.exec(
+ ret = execScriptRE(
` content `,
)
expect(ret).toBe(null)
})
test('ordinary script tag test', () => {
- scriptRE.lastIndex = 0
- const [, tag, content] = scriptRE.exec(
- ``,
- )!
+ const [, tag, content] = execScriptRE(``)!
expect(tag).toEqual('`,
- )!
+ const [, tag1, content1] = execScriptRE(``)!
expect(tag1).toEqual('