@@ -33,10 +33,7 @@ const getCurrentScriptUrl = function (moduleId) {
33
33
}
34
34
return fileMap . split ( ',' ) . map ( function ( mapRule ) {
35
35
const reg = new RegExp ( filename + '\\.js$' , 'g' ) ;
36
- return normalizeUrl (
37
- src . replace ( reg , mapRule . replace ( / { f i l e N a m e } / g, filename ) + '.css' ) ,
38
- { stripWWW : false } ,
39
- ) ;
36
+ return normalizeUrl ( src . replace ( reg , mapRule . replace ( / { f i l e N a m e } / g, filename ) + '.css' ) , { stripWWW : false } ) ;
40
37
} ) ;
41
38
} ;
42
39
} ;
@@ -46,8 +43,8 @@ function updateCss(el, url) {
46
43
url = el . href . split ( '?' ) [ 0 ] ;
47
44
}
48
45
if ( el . isLoaded === false ) {
49
- // We seem to be about to replace a css link that hasn't loaded yet.
50
- // We're probably changing the same file more than once.
46
+ // We seem to be about to replace a css link that hasn't loaded yet.
47
+ // We're probably changing the same file more than once.
51
48
return ;
52
49
}
53
50
if ( ! url || ! ( url . indexOf ( '.css' ) > - 1 ) ) return ;
@@ -58,29 +55,18 @@ function updateCss(el, url) {
58
55
newEl . isLoaded = false ;
59
56
newEl . addEventListener ( 'load' , function ( ) {
60
57
newEl . isLoaded = true ;
61
- el . parentNode . removeChild ( el ) ;
58
+ el . remove ( ) ;
62
59
} ) ;
63
60
newEl . addEventListener ( 'error' , function ( ) {
64
61
newEl . isLoaded = true ;
65
- el . parentNode . removeChild ( el ) ;
62
+ el . remove ( ) ;
66
63
} ) ;
67
64
68
65
newEl . href = url + '?' + Date . now ( ) ;
69
66
el . parentNode . appendChild ( newEl ) ;
70
67
}
71
68
72
- function getReloadUrl ( href , src ) {
73
- href = normalizeUrl ( href , { stripWWW : false } ) ;
74
- let ret ;
75
- src . some ( function ( url ) { // eslint-disable-line array-callback-return
76
- if ( href . indexOf ( src ) > - 1 ) {
77
- ret = url ;
78
- }
79
- } ) ;
80
- return ret ;
81
- }
82
-
83
- function reloadStyle ( src ) { // eslint-disable-line no-unused-vars
69
+ function reloadStyle ( src ) {
84
70
const elements = document . querySelectorAll ( 'link' ) ;
85
71
let loaded = false ;
86
72
@@ -97,6 +83,17 @@ function reloadStyle(src) { // eslint-disable-line no-unused-vars
97
83
return loaded ;
98
84
}
99
85
86
+ function getReloadUrl ( href , src ) {
87
+ href = normalizeUrl ( href , { stripWWW : false } ) ;
88
+ let ret ;
89
+ src . some ( function ( url ) {
90
+ if ( href . indexOf ( src ) > - 1 ) {
91
+ ret = url ;
92
+ }
93
+ } ) ;
94
+ return ret ;
95
+ }
96
+
100
97
function reloadAll ( ) {
101
98
const elements = document . querySelectorAll ( 'link' ) ;
102
99
forEach . call ( elements , function ( el ) {
@@ -106,19 +103,21 @@ function reloadAll() {
106
103
}
107
104
108
105
module . exports = function ( moduleId , options ) {
106
+ let getScriptSrc ;
107
+
109
108
if ( noDocument ) {
110
109
return noop ;
111
110
}
112
111
113
- const getScriptSrc = getCurrentScriptUrl ( moduleId ) ;
112
+ getScriptSrc = getCurrentScriptUrl ( moduleId ) ;
114
113
115
114
function update ( ) {
116
115
const src = getScriptSrc ( options . fileMap ) ;
117
- const reloaded = false ; // hack of all hacks...for now
118
- if ( reloaded ) {
119
- console . log ( '[HMR] css reload %s' , src . join ( ' ' ) ) ; // eslint-disable-line no-console
116
+ const reloaded = reloadStyle ( src ) ;
117
+ if ( reloaded && ! options . reloadAll ) {
118
+ console . log ( '[HMR] css reload %s' , src . join ( ' ' ) ) ;
120
119
} else {
121
- console . log ( '[HMR] Reload all css' ) ; // eslint-disable-line no-console
120
+ console . log ( '[HMR] Reload all css' ) ;
122
121
reloadAll ( ) ;
123
122
}
124
123
}
0 commit comments