From d390a6ab77e1ace67155afdc7625eeedca94918f Mon Sep 17 00:00:00 2001 From: Vben Date: Mon, 12 Apr 2021 17:04:28 +0800 Subject: [PATCH 1/4] fix(scan): improve script regular matching (fixes #2942) --- packages/vite/src/node/optimizer/scan.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vite/src/node/optimizer/scan.ts b/packages/vite/src/node/optimizer/scan.ts index 2c838e831502e6..db1d125f7f073a 100644 --- a/packages/vite/src/node/optimizer/scan.ts +++ b/packages/vite/src/node/optimizer/scan.ts @@ -134,7 +134,7 @@ function globEntries(pattern: string | string[], config: ResolvedConfig) { } const scriptModuleRE = /(]*type\s*=\s*(?:"module"|'module')[^>]*>)(.*?)<\/script>/gims -const scriptRE = /(]*>)(.*?)<\/script>/gims +const scriptRE = /(]*>)(.*?)<\/script>/gims const srcRE = /\bsrc\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s'">]+))/im const langRE = /\blang\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s'">]+))/im From 826dcfc3cec6a4284296c0726ff50d0af990e7b6 Mon Sep 17 00:00:00 2001 From: Vben Date: Tue, 13 Apr 2021 00:17:03 +0800 Subject: [PATCH 2/4] test: add test case --- packages/vite/src/node/__tests__/scan.spec.ts | 72 +++++++++++++++++++ packages/vite/src/node/optimizer/scan.ts | 4 +- 2 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 packages/vite/src/node/__tests__/scan.spec.ts diff --git a/packages/vite/src/node/__tests__/scan.spec.ts b/packages/vite/src/node/__tests__/scan.spec.ts new file mode 100644 index 00000000000000..87be700e9e0a01 --- /dev/null +++ b/packages/vite/src/node/__tests__/scan.spec.ts @@ -0,0 +1,72 @@ +describe('optimizer-scan:script-test', () => { + const scriptRE = /(]*>|>))(.*?)<\/script>/gims + + const scriptContent = `import { defineComponent } from 'vue' + import ScriptDevelopPane from './ScriptDevelopPane.vue'; + export default defineComponent({ + components: { + ScriptDevelopPane + } + })` + + test('component return value test', () => { + scriptRE.lastIndex = 0 + const [, tsOpenTag, , tsContent] = scriptRE.exec( + `` + ) + expect(tsOpenTag).toEqual('` + ) + expect(openTag).toEqual('` + ) + expect(tag).toEqual('` + ) + expect(tag1).toEqual(' + ` + ) + expect(tag).toEqual(' - ` - ) - expect(tag).toEqual('