diff --git a/src/hmr/hotModuleReplacement.js b/src/hmr/hotModuleReplacement.js index 58cc2d79..8de1a15a 100644 --- a/src/hmr/hotModuleReplacement.js +++ b/src/hmr/hotModuleReplacement.js @@ -246,6 +246,8 @@ function isUrlRequest(url) { return true; } +const updateFunctionMap = Object.create(null); + /** * @param {TODO} moduleId * @param {TODO} options @@ -258,6 +260,11 @@ module.exports = function (moduleId, options) { return noop; } + const key = JSON.stringify({ moduleId, options }); + if (updateFunctionMap[key]) { + return updateFunctionMap[key]; + } + const getScriptSrc = getCurrentScriptUrl(moduleId); function update() { @@ -281,5 +288,6 @@ module.exports = function (moduleId, options) { } } - return debounce(update, 50); + updateFunctionMap[key] = debounce(update, 50); + return updateFunctionMap[key]; }; diff --git a/src/loader.js b/src/loader.js index b3006b4a..0642864e 100644 --- a/src/loader.js +++ b/src/loader.js @@ -60,6 +60,9 @@ function hotLoader(content, context) { })}); module.hot.dispose(cssReload); ${accept} + if (module.hot.status() !== "idle") { + cssReload(); + } } `; }