Skip to content

Commit 757e854

Browse files
committed
fix cssModules hot reload (fix #614)
1 parent 89927c5 commit 757e854

File tree

1 file changed

+18
-8
lines changed

1 file changed

+18
-8
lines changed

lib/loader.js

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ module.exports = function (content) {
222222
var hasScoped = parts.styles.some(function (s) { return s.scoped })
223223

224224
// css modules
225-
var cssModules = {}
225+
var cssModules
226226

227227
// add requires for styles
228228
if (parts.styles.length) {
@@ -237,6 +237,9 @@ module.exports = function (content) {
237237
var moduleName = (style.module === true) ? '$style' : style.module
238238
// setCssModule
239239
if (moduleName) {
240+
if (!cssModules) {
241+
cssModules = {}
242+
}
240243
if (!hasModules) {
241244
hasModules = true
242245
output += 'var cssModules = {}\n'
@@ -334,7 +337,7 @@ module.exports = function (content) {
334337

335338
// cssModules
336339
output += ' /* cssModules */\n '
337-
if (Object.keys(cssModules).length) {
340+
if (cssModules) {
338341
// inject style modules as computed properties
339342
output += 'cssModules'
340343
} else {
@@ -384,18 +387,25 @@ module.exports = function (content) {
384387
' if (!module.hot.data) {\n' +
385388
// initial insert
386389
' hotAPI.createRecord("' + moduleId + '", Component.options)\n' +
387-
' } else {\n' +
388-
// update
390+
' } else {\n'
391+
// update
392+
if (cssModules) {
393+
output +=
389394
' if (module.hot.data.cssModules && JSON.stringify(module.hot.data.cssModules) !== JSON.stringify(cssModules)) {\n' +
390395
' delete Component.options._Ctor\n' +
391-
' }\n' +
396+
' }\n'
397+
}
398+
output +=
392399
' hotAPI.reload("' + moduleId + '", Component.options)\n' +
393-
' }\n' +
400+
' }\n'
401+
if (cssModules) {
394402
// save cssModules
403+
output +=
395404
' module.hot.dispose(function (data) {\n' +
396405
' data.cssModules = cssModules\n' +
397-
' })\n' +
398-
'})()}\n'
406+
' })\n'
407+
}
408+
output += '})()}\n'
399409
}
400410
// final export
401411
if (options.esModule) {

0 commit comments

Comments
 (0)