File tree Expand file tree Collapse file tree 11 files changed +50
-6
lines changed Expand file tree Collapse file tree 11 files changed +50
-6
lines changed Original file line number Diff line number Diff line change @@ -1454,4 +1454,12 @@ function defineTest(f: Fixture) {
1454
1454
'test-chunk1|test-chunk2|test-chunk2b|test-chunk3|test-chunk3' ,
1455
1455
)
1456
1456
} )
1457
+
1458
+ test ( 'tree-shake2' , async ( { page } ) => {
1459
+ await page . goto ( f . url ( ) )
1460
+ await waitForHydration ( page )
1461
+ await expect ( page . getByTestId ( 'test-tree-shake2' ) ) . toHaveText (
1462
+ 'test-tree-shake2:lib-client1|lib-server1' ,
1463
+ )
1464
+ } )
1457
1465
}
Original file line number Diff line number Diff line change @@ -39,6 +39,7 @@ import { TestAssetsServer } from './assets/server'
39
39
import { TestHmrSwitchServer } from './hmr-switch/server'
40
40
import { TestHmrSwitchClient } from './hmr-switch/client'
41
41
import { TestTreeShakeServer } from './tree-shake/server'
42
+ import { TestTreeShake2 } from './tree-shake2/server'
42
43
import { TestClientChunkServer } from './chunk/server'
43
44
import { TestTailwind } from './tailwind'
44
45
import { TestHmrClientDep2 } from './hmr-client-dep2/client'
@@ -100,6 +101,7 @@ export function Root(props: { url: URL }) {
100
101
< TestImportMetaGlob />
101
102
< TestAssetsServer />
102
103
< TestTreeShakeServer />
104
+ < TestTreeShake2 />
103
105
< TestClientChunkServer />
104
106
< TestChunk2 />
105
107
< TestUseId />
Original file line number Diff line number Diff line change
1
+ 'use client'
2
+
3
+ export function LibClient1 ( ) {
4
+ return 'lib-client1'
5
+ }
Original file line number Diff line number Diff line change
1
+ 'use client'
2
+
3
+ export function LibClient2 ( ) {
4
+ return 'lib-client2:__unused_tree_shake2__'
5
+ }
Original file line number Diff line number Diff line change
1
+ export function LibServer1 ( ) {
2
+ return 'lib-server1'
3
+ }
Original file line number Diff line number Diff line change
1
+ export function LibServer2 ( ) {
2
+ return 'lib-server2:__unused_tree_shake2__'
3
+ }
Original file line number Diff line number Diff line change
1
+ export * from './lib-client1'
2
+ export * from './lib-client2'
3
+ export * from './lib-server1'
4
+ export * from './lib-server2'
Original file line number Diff line number Diff line change
1
+ import { LibClient1 , LibServer1 } from './lib'
2
+
3
+ export function TestTreeShake2 ( ) {
4
+ return (
5
+ < div data-testid = "test-tree-shake2" >
6
+ test-tree-shake2:
7
+ < LibClient1 /> |< LibServer1 />
8
+ </ div >
9
+ )
10
+ }
Original file line number Diff line number Diff line change @@ -47,6 +47,7 @@ export default defineConfig({
47
47
if ( chunk . type === 'chunk' ) {
48
48
assert ( ! chunk . code . includes ( '__unused_client_reference__' ) )
49
49
assert ( ! chunk . code . includes ( '__unused_server_export__' ) )
50
+ assert ( ! chunk . code . includes ( '__unused_tree_shake2__' ) )
50
51
}
51
52
}
52
53
} ,
Original file line number Diff line number Diff line change @@ -1226,12 +1226,14 @@ function vitePluginUseClient(
1226
1226
// group client reference modules by `clientChunks` option
1227
1227
manager . clientReferenceGroups = { }
1228
1228
for ( const meta of Object . values ( manager . clientReferenceMetaMap ) ) {
1229
+ // no server chunk is associated when the entire "use client" module is tree-shaken
1230
+ if ( ! meta . serverChunk ) continue
1229
1231
let name =
1230
1232
useClientPluginOptions . clientChunks ?.( {
1231
1233
id : meta . importId ,
1232
1234
normalizedId : manager . toRelativeId ( meta . importId ) ,
1233
- serverChunk : meta . serverChunk ! ,
1234
- } ) ?? meta . serverChunk !
1235
+ serverChunk : meta . serverChunk ,
1236
+ } ) ?? meta . serverChunk
1235
1237
// ensure clean virtual id to avoid interfering with other plugins
1236
1238
name = cleanUrl ( name . replaceAll ( '..' , '__' ) )
1237
1239
const group = ( manager . clientReferenceGroups [ name ] ??= [ ] )
@@ -1333,6 +1335,7 @@ function vitePluginUseClient(
1333
1335
}
1334
1336
} ,
1335
1337
generateBundle ( _options , bundle ) {
1338
+ if ( manager . isScanBuild ) return
1336
1339
if ( this . environment . name !== serverEnvironmentName ) return
1337
1340
1338
1341
// analyze rsc build to inform later client reference building.
You can’t perform that action at this time.
0 commit comments