File tree 7 files changed +59
-1
lines changed
playground/environment-react-ssr
7 files changed +59
-1
lines changed Original file line number Diff line number Diff line change
1
+ export default { id : Math . random ( ) . toString ( 36 ) . slice ( 2 ) }
Original file line number Diff line number Diff line change
1
+ export { default } from './index.mjs'
Original file line number Diff line number Diff line change
1
+ {
2
+ "name" : " @vitejs/test-dep" ,
3
+ "private" : true ,
4
+ "type" : " module" ,
5
+ "exports" : {
6
+ "." : " ./index.mjs" ,
7
+ "./other" : " ./other.mjs"
8
+ }
9
+ }
Original file line number Diff line number Diff line change 4
4
"version" : " 0.0.0" ,
5
5
"type" : " module" ,
6
6
"scripts" : {
7
- "dev" : " vite --force " ,
7
+ "dev" : " vite" ,
8
8
"build" : " vite build --app" ,
9
9
"preview" : " vite preview"
10
10
},
11
11
"devDependencies" : {
12
12
"@types/react" : " ^18.3.11" ,
13
13
"@types/react-dom" : " ^18.3.0" ,
14
+ "@vitejs/test-dep" : " file:./deps/test-dep" ,
14
15
"react" : " ^18.3.1" ,
15
16
"react-fake-client" : " npm:react@^18.3.1" ,
16
17
"react-fake-server" : " npm:react@^18.3.1" ,
Original file line number Diff line number Diff line change 1
1
import ReactDomServer from 'react-dom/server'
2
2
import type { Connect , ViteDevServer } from 'vite'
3
+ import testDep from '@vitejs/test-dep'
3
4
import Root from './root'
4
5
5
6
const handler : Connect . NextHandleFunction = async ( _req , res ) => {
7
+ const url = new URL ( _req . url ! , 'http://localhost' )
8
+ if ( url . pathname === '/late-discovery' ) {
9
+ // simulate late discovery by importing new modules from virtual.
10
+ // this can cuase double modules on first request handling and
11
+ // response would look like
12
+ // {"entry":{"id":"heyzuawcitr"},"late":{"id":"autz5sutu1k"} }
13
+ // @ts -expect-error no dts
14
+ const mod = await import ( 'virtual:late-discovery' )
15
+ res . setHeader ( 'content-type' , 'application/json' ) . end (
16
+ JSON . stringify ( {
17
+ entry : testDep ,
18
+ late : mod . default ,
19
+ } ) ,
20
+ )
21
+ return
22
+ }
6
23
const ssrHtml = ReactDomServer . renderToString ( < Root /> )
7
24
let html = await importHtml ( )
8
25
html = html . replace ( / < b o d y > / , `<body><div id="root">${ ssrHtml } </div>` )
Original file line number Diff line number Diff line change @@ -20,9 +20,27 @@ export default defineConfig((env) => ({
20
20
Object . assign ( globalThis , { __globalServer : server } )
21
21
} ,
22
22
} ,
23
+ {
24
+ name : 'virtual-late-discovery' ,
25
+ resolveId ( source ) {
26
+ if ( source === 'virtual:late-discovery' ) {
27
+ return '\0' + source
28
+ }
29
+ } ,
30
+ load ( id ) {
31
+ if ( id === '\0virtual:late-discovery' ) {
32
+ return `export { default } from "@vitejs/test-dep/other"`
33
+ }
34
+ } ,
35
+ } ,
23
36
] ,
24
37
environments : {
25
38
client : {
39
+ dev : {
40
+ optimizeDeps : {
41
+ include : [ 'react/jsx-dev-runtime' ] ,
42
+ } ,
43
+ } ,
26
44
build : {
27
45
minify : false ,
28
46
sourcemap : true ,
@@ -33,6 +51,7 @@ export default defineConfig((env) => ({
33
51
dev : {
34
52
optimizeDeps : {
35
53
noDiscovery : false ,
54
+ include : [ 'react/jsx-dev-runtime' ] ,
36
55
} ,
37
56
} ,
38
57
build : {
You can’t perform that action at this time.
0 commit comments