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 {
835835 isSelfAccepting ,
836836 staticImportedUrls ,
837837 )
838- if ( hasHMR && prunedImports ) {
838+ if ( prunedImports ) {
839839 handlePrunedModules ( prunedImports , environment )
840840 }
841841 }
Original file line number Diff line number Diff line change @@ -997,6 +997,17 @@ if (!isBuild) {
997997 . toMatch ( 'parent:child' )
998998 } )
999999
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+
10001011 test ( 'import.meta.hot?.accept' , async ( ) => {
10011012 await page . goto ( viteTestUrl )
10021013
Original file line number Diff line number Diff line change @@ -7,6 +7,7 @@ import './file-delete-restore'
77import './optional-chaining/parent'
88import './intermediate-file-delete'
99import './circular'
10+ import './prune'
1011import logo from './logo.svg'
1112import logoNoInline from './logo-no-inline.svg'
1213import { msg as softInvalidationMsg } from './soft-invalidation'
Original file line number Diff line number Diff line change 4545< img id ="logo " />
4646< img id ="logo-no-inline " />
4747< 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