@@ -22,8 +22,6 @@ import type { ResolvedOptions } from './index'
2222
2323const debug = _debug ( 'vite:hmr' )
2424
25- const directRequestRE = / (?: \? | & ) d i r e c t \b /
26-
2725/**
2826 * Vite-specific HMR handling
2927 */
@@ -43,17 +41,19 @@ export async function handleHotUpdate(
4341 const { descriptor } = createDescriptor ( file , content , options , true )
4442
4543 let needRerender = false
44+ const nonJsModules = modules . filter ( ( m ) => m . type !== 'js' )
45+ const jsModules = modules . filter ( ( m ) => m . type === 'js' )
4646 const affectedModules = new Set < ModuleNode | undefined > (
47- modules . filter ( ( mod ) => mod . type !== 'js' ) , // this plugin does not handle non-js modules
47+ nonJsModules , // this plugin does not handle non-js modules
4848 )
49- const mainModule = getMainModule ( modules )
50- const templateModule = modules . find ( ( m ) => / t y p e = t e m p l a t e / . test ( m . url ) )
49+ const mainModule = getMainModule ( jsModules )
50+ const templateModule = jsModules . find ( ( m ) => / t y p e = t e m p l a t e / . test ( m . url ) )
5151
5252 // trigger resolveScript for descriptor so that we'll have the AST ready
5353 resolveScript ( descriptor , options , false , customElement )
5454 const scriptChanged = hasScriptChanged ( prevDescriptor , descriptor )
5555 if ( scriptChanged ) {
56- affectedModules . add ( getScriptModule ( modules ) || mainModule )
56+ affectedModules . add ( getScriptModule ( jsModules ) || mainModule )
5757 }
5858
5959 if ( ! isEqualBlock ( descriptor . template , prevDescriptor . template ) ) {
@@ -95,11 +95,10 @@ export async function handleHotUpdate(
9595 const next = nextStyles [ i ]
9696 if ( ! prev || ! isEqualBlock ( prev , next ) ) {
9797 didUpdateStyle = true
98- const mod = modules . find (
98+ const mod = jsModules . find (
9999 ( m ) =>
100100 m . url . includes ( `type=style&index=${ i } ` ) &&
101- m . url . endsWith ( `.${ next . lang || 'css' } ` ) &&
102- ! directRequestRE . test ( m . url ) ,
101+ m . url . endsWith ( `.${ next . lang || 'css' } ` ) ,
103102 )
104103 if ( mod ) {
105104 affectedModules . add ( mod )
@@ -130,7 +129,7 @@ export async function handleHotUpdate(
130129 const prev = prevCustoms [ i ]
131130 const next = nextCustoms [ i ]
132131 if ( ! prev || ! isEqualBlock ( prev , next ) ) {
133- const mod = modules . find ( ( m ) =>
132+ const mod = jsModules . find ( ( m ) =>
134133 m . url . includes ( `type=${ prev . type } &index=${ i } ` ) ,
135134 )
136135 if ( mod ) {
@@ -329,9 +328,9 @@ function hasScriptChanged(prev: SFCDescriptor, next: SFCDescriptor): boolean {
329328 return false
330329}
331330
332- function getMainModule ( modules : ModuleNode [ ] ) {
331+ function getMainModule ( jsModules : ModuleNode [ ] ) {
333332 return (
334- modules
333+ jsModules
335334 . filter ( ( m ) => ! / t y p e = / . test ( m . url ) || / t y p e = s c r i p t / . test ( m . url ) )
336335 // #9341
337336 // We pick the module with the shortest URL in order to pick the module
@@ -342,8 +341,8 @@ function getMainModule(modules: ModuleNode[]) {
342341 )
343342}
344343
345- function getScriptModule ( modules : ModuleNode [ ] ) {
346- return modules . find ( ( m ) => / t y p e = s c r i p t .* & l a n g \. \w + $ / . test ( m . url ) )
344+ function getScriptModule ( jsModules : ModuleNode [ ] ) {
345+ return jsModules . find ( ( m ) => / t y p e = s c r i p t .* & l a n g \. \w + $ / . test ( m . url ) )
347346}
348347
349348export function handleTypeDepChange (
0 commit comments