Skip to content

Commit 00a3916

Browse files
committed
fix(browser): optimize build output and always prebundle vitest
1 parent 142c735 commit 00a3916

File tree

14 files changed

+56
-42
lines changed

14 files changed

+56
-42
lines changed

packages/browser/src/client/client.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import type { ModuleMocker } from '@vitest/mocker/browser'
21
import type { CancelReason } from '@vitest/runner'
32
import type { BirpcReturn } from 'birpc'
3+
import type { ModuleMocker } from 'vitest/internal/browser'
44
import type { WebSocketBrowserEvents, WebSocketBrowserHandlers } from '../node/types'
55
import type { IframeOrchestrator } from './orchestrator'
66
import { createBirpc } from 'birpc'

packages/browser/src/client/orchestrator.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import type { GlobalChannelIncomingEvent, IframeChannelIncomingEvent, IframeChannelOutgoingEvent, IframeViewportDoneEvent, IframeViewportFailEvent } from '@vitest/browser/client'
22
import type { BrowserTesterOptions, SerializedConfig } from 'vitest'
33
import { channel, client, globalChannel } from '@vitest/browser/client'
4-
import { generateHash } from '@vitest/runner/utils'
54
import { relative } from 'pathe'
65
import { getUiAPI } from './ui'
76
import { getBrowserState, getConfig } from './utils'
@@ -297,6 +296,20 @@ function generateFileId(file: string) {
297296
return generateHash(`${path}${project}`)
298297
}
299298

299+
// importing this from @vitest/runner bring it the whole runner
300+
function generateHash(str: string): string {
301+
let hash = 0
302+
if (str.length === 0) {
303+
return `${hash}`
304+
}
305+
for (let i = 0; i < str.length; i++) {
306+
const char = str.charCodeAt(i)
307+
hash = (hash << 5) - hash + char
308+
hash = hash & hash // Convert to 32bit integer
309+
}
310+
return `${hash}`
311+
}
312+
300313
async function setIframeViewport(
301314
iframe: HTMLIFrameElement,
302315
width: number,

packages/browser/src/client/tester/mocker.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ModuleMocker } from '@vitest/mocker/browser'
1+
import { ModuleMocker } from 'vitest/internal/browser'
22
import { getBrowserState } from '../utils'
33

44
export class VitestBrowserClientMocker extends ModuleMocker {

packages/browser/src/client/tester/runner.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,16 @@ import type { VitestBrowserClientMocker } from './mocker'
55
import { globalChannel, onCancel } from '@vitest/browser/client'
66
import { page, userEvent } from '@vitest/browser/context'
77
import {
8+
createStackString,
89
loadDiffConfig,
910
loadSnapshotSerializers,
11+
NodeBenchmarkRunner,
1012
originalPositionFor,
13+
parseStacktrace,
1114
takeCoverageInsideWorker,
1215
TraceMap,
16+
VitestTestRunner,
1317
} from 'vitest/internal/browser'
14-
import { NodeBenchmarkRunner, VitestTestRunner } from 'vitest/runners'
15-
import { createStackString, parseStacktrace } from '../../../../utils/src/source-map'
1618
import { executor, getWorkerState } from '../utils'
1719
import { rpc } from './rpc'
1820
import { VitestBrowserSnapshotEnvironment } from './snapshot'

packages/browser/src/client/tester/tester.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,11 @@ import { createSafeRpc } from './rpc'
1919
import { browserHashMap, initiateRunner } from './runner'
2020
import { CommandsManager } from './utils'
2121

22+
const now = performance.now.bind(performance)
23+
2224
const debugVar = getConfig().env.VITEST_BROWSER_DEBUG
2325
const debug = debugVar && debugVar !== 'false'
24-
? (...args: unknown[]) => client.rpc.debug?.(...args.map(String))
26+
? (...args: unknown[]) => client.rpc.debug(...args.map(String))
2527
: undefined
2628

2729
channel.addEventListener('message', async (e) => {
@@ -142,7 +144,7 @@ async function prepareTestEnvironment(options: PrepareOptions) {
142144
})
143145
}
144146

145-
state.durations.prepare = performance.now() - options.startTime
147+
state.durations.prepare = options.startTime - now()
146148

147149
return {
148150
runner,
@@ -194,15 +196,15 @@ interface PrepareOptions {
194196
}
195197

196198
async function prepare(options: PrepareOptions) {
199+
// fetch('file://non-existing-1').catch(() => {})
197200
preparedData = await prepareTestEnvironment(options)
201+
// fetch('file://non-existing-2').catch(() => {})
198202

199203
// page is reloading
200204
debug?.('runner resolved successfully')
201205

202206
const { config, state } = preparedData
203207

204-
state.durations.prepare = performance.now() - state.durations.prepare
205-
206208
debug?.('prepare time', state.durations.prepare, 'ms')
207209

208210
await Promise.all([

packages/browser/src/node/plugin.ts

Lines changed: 5 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -188,32 +188,12 @@ export default (parentServer: ParentBrowserProject, base = '/'): Plugin[] => {
188188
...(project.config.snapshotSerializers || []),
189189
]
190190

191-
const exclude = [
192-
'vitest',
193-
'vitest/internal/browser',
194-
'vitest/runners',
195-
'@vitest/browser',
196-
'@vitest/browser/client',
197-
'@vitest/utils',
198-
'@vitest/utils/source-map',
199-
'@vitest/runner',
200-
'@vitest/spy',
201-
'@vitest/utils/error',
202-
'@vitest/snapshot',
203-
'@vitest/expect',
204-
'std-env',
205-
'tinybench',
206-
'tinyspy',
207-
'tinyrainbow',
208-
'pathe',
209-
'msw',
210-
'msw/browser',
211-
]
212-
213191
if (typeof project.config.diff === 'string') {
214192
entries.push(project.config.diff)
215193
}
216194

195+
const exclude: string[] = []
196+
217197
if (parentServer.vitest.coverageProvider) {
218198
const coverage = parentServer.vitest.config.coverage
219199
const provider = coverage.provider
@@ -237,6 +217,8 @@ export default (parentServer: ParentBrowserProject, base = '/'): Plugin[] => {
237217
}
238218

239219
const include = [
220+
'vitest',
221+
'vitest/internal/browser',
240222
'vitest > expect-type',
241223
'vitest > @vitest/snapshot > magic-string',
242224
'vitest > chai',
@@ -275,7 +257,7 @@ export default (parentServer: ParentBrowserProject, base = '/'): Plugin[] => {
275257
},
276258
optimizeDeps: {
277259
entries,
278-
exclude,
260+
// exclude,
279261
include,
280262
},
281263
}

packages/mocker/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@
6767
},
6868
"dependencies": {
6969
"@vitest/spy": "workspace:*",
70+
"@vitest/utils": "workspace:*",
7071
"estree-walker": "^3.0.3",
7172
"magic-string": "catalog:"
7273
},

packages/mocker/rollup.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ const external = [
2323
...Object.keys(pkg.dependencies || {}),
2424
...Object.keys(pkg.peerDependencies || {}),
2525
/^msw/,
26+
'@vitest/utils/source-map',
2627
]
2728

2829
const dtsUtils = createDtsUtils()

packages/mocker/src/node/index.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import { fileURLToPath } from 'node:url'
2+
import { resolve } from 'pathe'
3+
14
export { createManualModuleSource } from '../utils'
25
export { automockModule, automockPlugin } from './automockPlugin'
36
export type { AutomockPluginOptions } from './automockPlugin'
@@ -15,3 +18,6 @@ export type {
1518
ServerMockResolution,
1619
ServerResolverOptions,
1720
} from './resolver'
21+
22+
const pkgRoot = resolve(fileURLToPath(import.meta.url), '../..')
23+
export const distRoot: string = resolve(pkgRoot, 'dist')

packages/utils/package.json

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,6 @@
2424
"types": "./dist/diff.d.ts",
2525
"default": "./dist/diff.js"
2626
},
27-
"./ast": {
28-
"types": "./dist/ast.d.ts",
29-
"default": "./dist/ast.js"
30-
},
3127
"./error": {
3228
"types": "./dist/error.d.ts",
3329
"default": "./dist/error.js"

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy