File tree Expand file tree Collapse file tree 8 files changed +35
-1
lines changed
packages/vite/src/node/plugins Expand file tree Collapse file tree 8 files changed +35
-1
lines changed Original file line number Diff line number Diff line change @@ -835,7 +835,7 @@ export function importAnalysisPlugin(config: ResolvedConfig): Plugin {
835
835
isSelfAccepting ,
836
836
staticImportedUrls ,
837
837
)
838
- if ( hasHMR && prunedImports ) {
838
+ if ( prunedImports ) {
839
839
handlePrunedModules ( prunedImports , environment )
840
840
}
841
841
}
Original file line number Diff line number Diff line change @@ -997,6 +997,17 @@ if (!isBuild) {
997
997
. toMatch ( 'parent:child' )
998
998
} )
999
999
1000
+ test ( 'deleting import from non-self-accepting module can trigger prune event' , async ( ) => {
1001
+ await page . goto ( viteTestUrl )
1002
+ await expect . poll ( ( ) => page . textContent ( '.prune' ) ) . toMatch ( 'prune-init' )
1003
+ editFile ( 'prune/dep1.js' , ( code ) =>
1004
+ code . replace ( `import './dep2.js'` , `// import './dep2.js'` ) ,
1005
+ )
1006
+ await expect
1007
+ . poll ( ( ) => page . textContent ( '.prune' ) )
1008
+ . toMatch ( 'prune-init|dep2-disposed|dep2-pruned' )
1009
+ } )
1010
+
1000
1011
test ( 'import.meta.hot?.accept' , async ( ) => {
1001
1012
await page . goto ( viteTestUrl )
1002
1013
Original file line number Diff line number Diff line change @@ -7,6 +7,7 @@ import './file-delete-restore'
7
7
import './optional-chaining/parent'
8
8
import './intermediate-file-delete'
9
9
import './circular'
10
+ import './prune'
10
11
import logo from './logo.svg'
11
12
import logoNoInline from './logo-no-inline.svg'
12
13
import { msg as softInvalidationMsg } from './soft-invalidation'
Original file line number Diff line number Diff line change 45
45
< img id ="logo " />
46
46
< img id ="logo-no-inline " />
47
47
< div class ="circular "> </ div >
48
+ < div class ="prune "> prune-init</ div >
Original file line number Diff line number Diff line change
1
+ import './dep2.js'
2
+
3
+ // TODO: https://github.com/vitejs/vite/issues/20781
4
+ // currently we need one more `import` in this module
5
+ // to trigger prune for depending module `dep2.js` since
6
+ // the prune event logic is skipped when `es-module-lexer`
7
+ // detects `imports.length === 0`
8
+ import './dep2-other.js'
Original file line number Diff line number Diff line change
1
+ if ( import . meta. hot ) {
2
+ import . meta. hot . dispose ( ( ) => {
3
+ document . querySelector ( '.prune' ) . textContent += '|dep2-disposed'
4
+ } )
5
+ import . meta. hot . prune ( ( ) => {
6
+ document . querySelector ( '.prune' ) . textContent += '|dep2-pruned'
7
+ } )
8
+ }
Original file line number Diff line number Diff line change
1
+ import './dep1.js'
2
+
3
+ if ( import . meta. hot ) {
4
+ import . meta. hot . accept ( ( ) => { } )
5
+ }
You can’t perform that action at this time.
0 commit comments