@@ -4,47 +4,66 @@ import type { ResolvedApiConfig, ResolvedConfig } from '../types/config'
44import { defaultPort } from '../../constants'
55import { resolveApiServerConfig } from '../config/resolveConfig'
66
7- export function VitestConfigServer ( harness : PluginHarness , globalConfig ?: ResolvedConfig ) : Plugin {
8- return {
9- name : 'vitest:config:server' ,
10- enforce : 'post' ,
11- config : {
12- order : 'post' ,
13- handler ( viteConfig ) {
14- // Custom user config, this plugin already received CLI overrides
15- const testConfig = viteConfig . test ?? { }
16- const isBrowserEnabled = ! ! testConfig . browser ?. enabled
7+ export function VitestConfigServer ( harness : PluginHarness , globalConfig ?: ResolvedConfig ) : Plugin [ ] {
8+ return [
9+ {
10+ name : 'vitest:config:server-defaults' ,
11+ config : {
12+ // These static server toggles must be visible to other plugins that
13+ // read `server.hmr` in their own `config` hook — e.g.
14+ // `@vitejs/plugin-react` turns React Fast Refresh off only when it sees
15+ // HMR disabled. A `post` hook (below) runs after such plugins, so set
16+ // them here in a `pre` hook instead.
17+ order : 'pre' ,
18+ handler ( ) {
19+ return {
20+ server : {
21+ preTransformRequests : false ,
22+ hmr : false ,
23+ open : false ,
24+ } ,
25+ }
26+ } ,
27+ } ,
28+ } ,
29+ {
30+ name : 'vitest:config:server' ,
31+ enforce : 'post' ,
32+ config : {
33+ order : 'post' ,
34+ handler ( viteConfig ) {
35+ // Custom user config, this plugin already received CLI overrides
36+ const testConfig = viteConfig . test ?? { }
37+ const isBrowserEnabled = ! ! testConfig . browser ?. enabled
1738
18- const api = resolveApiServerConfig (
19- testConfig ,
20- isBrowserEnabled ? harness . _browserLastPort ++ : defaultPort ,
21- harness . logger ,
22- ) as ResolvedApiConfig
23- testConfig . api = api
24- if ( globalConfig ) {
25- api . token = globalConfig . api . token
26- api . tokenCreated = globalConfig . api . tokenCreated
27- }
39+ const api = resolveApiServerConfig (
40+ testConfig ,
41+ isBrowserEnabled ? harness . _browserLastPort ++ : defaultPort ,
42+ harness . logger ,
43+ ) as ResolvedApiConfig
44+ testConfig . api = api
45+ if ( globalConfig ) {
46+ api . token = globalConfig . api . token
47+ api . tokenCreated = globalConfig . api . tokenCreated
48+ }
2849
29- const server : ServerOptions = {
30- ...api ,
31- preTransformRequests : false ,
32- hmr : false ,
33- open : false ,
34- }
50+ const server : ServerOptions = {
51+ ...api ,
52+ }
3553
36- // Always disable the websocket server in middlewareMode
37- if ( ! isBrowserEnabled && api . middlewareMode ) {
38- server . ws = false
39- }
40- else if ( viteConfig . server && 'ws' in viteConfig . server ) {
41- viteConfig . server . ws = undefined
42- }
54+ // Always disable the websocket server in middlewareMode
55+ if ( ! isBrowserEnabled && api . middlewareMode ) {
56+ server . ws = false
57+ }
58+ else if ( viteConfig . server && 'ws' in viteConfig . server ) {
59+ viteConfig . server . ws = undefined
60+ }
4361
44- return {
45- server,
46- }
62+ return {
63+ server,
64+ }
65+ } ,
4766 } ,
4867 } ,
49- }
68+ ]
5069}
0 commit comments