|
| 1 | +import path from 'node:path' |
1 | 2 | import { describe, expect, test } from 'vitest' |
2 | 3 | import { commentRE, importsRE, scriptRE } from '../optimizer/scan' |
3 | 4 | import { multilineCommentsRE, singlelineCommentsRE } from '../utils' |
| 5 | +import { createServer, createServerModuleRunner } from '..' |
4 | 6 |
|
5 | 7 | describe('optimizer-scan:script-test', () => { |
6 | 8 | const scriptContent = `import { defineComponent } from 'vue' |
@@ -123,3 +125,46 @@ describe('optimizer-scan:script-test', () => { |
123 | 125 | expect(ret).not.toContain('export default') |
124 | 126 | }) |
125 | 127 | }) |
| 128 | + |
| 129 | +test('scan jsx-runtime', async (ctx) => { |
| 130 | + const server = await createServer({ |
| 131 | + configFile: false, |
| 132 | + logLevel: 'error', |
| 133 | + root: path.join(import.meta.dirname, 'fixtures', 'scan-jsx-runtime'), |
| 134 | + environments: { |
| 135 | + client: { |
| 136 | + // silence client optimizer |
| 137 | + optimizeDeps: { |
| 138 | + noDiscovery: true, |
| 139 | + }, |
| 140 | + }, |
| 141 | + ssr: { |
| 142 | + resolve: { |
| 143 | + noExternal: true, |
| 144 | + }, |
| 145 | + optimizeDeps: { |
| 146 | + force: true, |
| 147 | + noDiscovery: false, |
| 148 | + entries: ['./entry-jsx.tsx', './entry-no-jsx.js'], |
| 149 | + }, |
| 150 | + }, |
| 151 | + }, |
| 152 | + }) |
| 153 | + |
| 154 | + // start server to ensure optimizer run |
| 155 | + await server.listen() |
| 156 | + ctx.onTestFinished(() => server.close()) |
| 157 | + |
| 158 | + const runner = createServerModuleRunner(server.environments.ssr, { |
| 159 | + hmr: { logger: false }, |
| 160 | + }) |
| 161 | + |
| 162 | + // flush initial optimizer by importing any file |
| 163 | + await runner.import('./entry-no-jsx.js') |
| 164 | + |
| 165 | + // verify jsx won't trigger optimizer re-run |
| 166 | + const mod1 = await runner.import('./entry-jsx.js') |
| 167 | + const mod2 = await runner.import('./entry-jsx.js') |
| 168 | + expect((globalThis as any).__test_scan_jsx_runtime).toBe(1) |
| 169 | + expect(mod1).toBe(mod2) |
| 170 | +}) |
0 commit comments