Skip to content

Commit 5bcd259

Browse files
authored
refactor: consolidate HMR code and refine ESM HMR (webpack#19629)
1 parent 2ee5078 commit 5bcd259

6 files changed

+57
-110
lines changed

lib/esm/ModuleChunkLoadingRuntimeModule.js

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ const Compilation = require("../Compilation");
99
const RuntimeGlobals = require("../RuntimeGlobals");
1010
const RuntimeModule = require("../RuntimeModule");
1111
const Template = require("../Template");
12+
const {
13+
generateJavascriptHMR
14+
} = require("../hmr/JavascriptHotModuleReplacementHelper");
1215
const {
1316
getChunkFilenameTemplate,
1417
chunkHasJs
@@ -352,28 +355,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
352355
: "// no on chunks loaded",
353356
withHmr
354357
? Template.asString([
355-
Template.getFunctionContent(
356-
require("../hmr/JavascriptHotModuleReplacement.runtime.js")
357-
)
358-
.replace(/\$key\$/g, "jsonp")
359-
.replace(/\$installedChunks\$/g, "installedChunks")
360-
.replace(/\$loadUpdateChunk\$/g, "loadUpdateChunk")
361-
.replace(/\$moduleCache\$/g, RuntimeGlobals.moduleCache)
362-
.replace(/\$moduleFactories\$/g, RuntimeGlobals.moduleFactories)
363-
.replace(
364-
/\$ensureChunkHandlers\$/g,
365-
RuntimeGlobals.ensureChunkHandlers
366-
)
367-
.replace(/\$hasOwnProperty\$/g, RuntimeGlobals.hasOwnProperty)
368-
.replace(/\$hmrModuleData\$/g, RuntimeGlobals.hmrModuleData)
369-
.replace(
370-
/\$hmrDownloadUpdateHandlers\$/g,
371-
RuntimeGlobals.hmrDownloadUpdateHandlers
372-
)
373-
.replace(
374-
/\$hmrInvalidateModuleHandlers\$/g,
375-
RuntimeGlobals.hmrInvalidateModuleHandlers
376-
),
358+
generateJavascriptHMR("module"),
377359
"",
378360
"function loadUpdateChunk(chunkId, updatedModulesList) {",
379361
Template.indent([
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/*
2+
MIT License http://www.opensource.org/licenses/mit-license.php
3+
Author Haijie Xie @hai-x
4+
*/
5+
6+
"use strict";
7+
8+
const RuntimeGlobals = require("../RuntimeGlobals");
9+
10+
const Template = require("../Template");
11+
12+
/**
13+
* @param {string} type unique identifier used for HMR runtime properties
14+
* @returns {string} HMR runtime code
15+
*/
16+
const generateJavascriptHMR = type =>
17+
Template.getFunctionContent(
18+
require("../hmr/JavascriptHotModuleReplacement.runtime.js")
19+
)
20+
.replace(/\$key\$/g, type)
21+
.replace(/\$installedChunks\$/g, "installedChunks")
22+
.replace(/\$loadUpdateChunk\$/g, "loadUpdateChunk")
23+
.replace(/\$moduleCache\$/g, RuntimeGlobals.moduleCache)
24+
.replace(/\$moduleFactories\$/g, RuntimeGlobals.moduleFactories)
25+
.replace(/\$ensureChunkHandlers\$/g, RuntimeGlobals.ensureChunkHandlers)
26+
.replace(/\$hasOwnProperty\$/g, RuntimeGlobals.hasOwnProperty)
27+
.replace(/\$hmrModuleData\$/g, RuntimeGlobals.hmrModuleData)
28+
.replace(
29+
/\$hmrDownloadUpdateHandlers\$/g,
30+
RuntimeGlobals.hmrDownloadUpdateHandlers
31+
)
32+
.replace(
33+
/\$hmrInvalidateModuleHandlers\$/g,
34+
RuntimeGlobals.hmrInvalidateModuleHandlers
35+
);
36+
37+
module.exports.generateJavascriptHMR = generateJavascriptHMR;

lib/node/ReadFileChunkLoadingRuntimeModule.js

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
const RuntimeGlobals = require("../RuntimeGlobals");
88
const RuntimeModule = require("../RuntimeModule");
99
const Template = require("../Template");
10+
const {
11+
generateJavascriptHMR
12+
} = require("../hmr/JavascriptHotModuleReplacementHelper");
1013
const {
1114
chunkHasJs,
1215
getChunkFilenameTemplate
@@ -242,28 +245,7 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
242245
]),
243246
"}",
244247
"",
245-
Template.getFunctionContent(
246-
require("../hmr/JavascriptHotModuleReplacement.runtime.js")
247-
)
248-
.replace(/\$key\$/g, "readFileVm")
249-
.replace(/\$installedChunks\$/g, "installedChunks")
250-
.replace(/\$loadUpdateChunk\$/g, "loadUpdateChunk")
251-
.replace(/\$moduleCache\$/g, RuntimeGlobals.moduleCache)
252-
.replace(/\$moduleFactories\$/g, RuntimeGlobals.moduleFactories)
253-
.replace(
254-
/\$ensureChunkHandlers\$/g,
255-
RuntimeGlobals.ensureChunkHandlers
256-
)
257-
.replace(/\$hasOwnProperty\$/g, RuntimeGlobals.hasOwnProperty)
258-
.replace(/\$hmrModuleData\$/g, RuntimeGlobals.hmrModuleData)
259-
.replace(
260-
/\$hmrDownloadUpdateHandlers\$/g,
261-
RuntimeGlobals.hmrDownloadUpdateHandlers
262-
)
263-
.replace(
264-
/\$hmrInvalidateModuleHandlers\$/g,
265-
RuntimeGlobals.hmrInvalidateModuleHandlers
266-
)
248+
generateJavascriptHMR("readFileVm")
267249
])
268250
: "// no HMR",
269251
"",

lib/node/RequireChunkLoadingRuntimeModule.js

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
const RuntimeGlobals = require("../RuntimeGlobals");
88
const RuntimeModule = require("../RuntimeModule");
99
const Template = require("../Template");
10+
const {
11+
generateJavascriptHMR
12+
} = require("../hmr/JavascriptHotModuleReplacementHelper");
1013
const {
1114
chunkHasJs,
1215
getChunkFilenameTemplate
@@ -199,28 +202,7 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
199202
]),
200203
"}",
201204
"",
202-
Template.getFunctionContent(
203-
require("../hmr/JavascriptHotModuleReplacement.runtime.js")
204-
)
205-
.replace(/\$key\$/g, "require")
206-
.replace(/\$installedChunks\$/g, "installedChunks")
207-
.replace(/\$loadUpdateChunk\$/g, "loadUpdateChunk")
208-
.replace(/\$moduleCache\$/g, RuntimeGlobals.moduleCache)
209-
.replace(/\$moduleFactories\$/g, RuntimeGlobals.moduleFactories)
210-
.replace(
211-
/\$ensureChunkHandlers\$/g,
212-
RuntimeGlobals.ensureChunkHandlers
213-
)
214-
.replace(/\$hasOwnProperty\$/g, RuntimeGlobals.hasOwnProperty)
215-
.replace(/\$hmrModuleData\$/g, RuntimeGlobals.hmrModuleData)
216-
.replace(
217-
/\$hmrDownloadUpdateHandlers\$/g,
218-
RuntimeGlobals.hmrDownloadUpdateHandlers
219-
)
220-
.replace(
221-
/\$hmrInvalidateModuleHandlers\$/g,
222-
RuntimeGlobals.hmrInvalidateModuleHandlers
223-
)
205+
generateJavascriptHMR("require")
224206
])
225207
: "// no HMR",
226208
"",

lib/web/JsonpChunkLoadingRuntimeModule.js

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ const Compilation = require("../Compilation");
99
const RuntimeGlobals = require("../RuntimeGlobals");
1010
const RuntimeModule = require("../RuntimeModule");
1111
const Template = require("../Template");
12+
const {
13+
generateJavascriptHMR
14+
} = require("../hmr/JavascriptHotModuleReplacementHelper");
1215
const chunkHasJs = require("../javascript/JavascriptModulesPlugin").chunkHasJs;
1316
const { getInitialChunkIds } = require("../javascript/StartupHelpers");
1417
const compileBooleanMatcher = require("../util/compileBooleanMatcher");
@@ -363,28 +366,7 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
363366
]
364367
)};`,
365368
"",
366-
Template.getFunctionContent(
367-
require("../hmr/JavascriptHotModuleReplacement.runtime.js")
368-
)
369-
.replace(/\$key\$/g, "jsonp")
370-
.replace(/\$installedChunks\$/g, "installedChunks")
371-
.replace(/\$loadUpdateChunk\$/g, "loadUpdateChunk")
372-
.replace(/\$moduleCache\$/g, RuntimeGlobals.moduleCache)
373-
.replace(/\$moduleFactories\$/g, RuntimeGlobals.moduleFactories)
374-
.replace(
375-
/\$ensureChunkHandlers\$/g,
376-
RuntimeGlobals.ensureChunkHandlers
377-
)
378-
.replace(/\$hasOwnProperty\$/g, RuntimeGlobals.hasOwnProperty)
379-
.replace(/\$hmrModuleData\$/g, RuntimeGlobals.hmrModuleData)
380-
.replace(
381-
/\$hmrDownloadUpdateHandlers\$/g,
382-
RuntimeGlobals.hmrDownloadUpdateHandlers
383-
)
384-
.replace(
385-
/\$hmrInvalidateModuleHandlers\$/g,
386-
RuntimeGlobals.hmrInvalidateModuleHandlers
387-
)
369+
generateJavascriptHMR("jsonp")
388370
])
389371
: "// no HMR",
390372
"",

lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
const RuntimeGlobals = require("../RuntimeGlobals");
88
const RuntimeModule = require("../RuntimeModule");
99
const Template = require("../Template");
10+
const {
11+
generateJavascriptHMR
12+
} = require("../hmr/JavascriptHotModuleReplacementHelper");
1013
const {
1114
getChunkFilenameTemplate,
1215
chunkHasJs
@@ -199,28 +202,7 @@ class ImportScriptsChunkLoadingRuntimeModule extends RuntimeModule {
199202
]),
200203
"}",
201204
"",
202-
Template.getFunctionContent(
203-
require("../hmr/JavascriptHotModuleReplacement.runtime.js")
204-
)
205-
.replace(/\$key\$/g, "importScripts")
206-
.replace(/\$installedChunks\$/g, "installedChunks")
207-
.replace(/\$loadUpdateChunk\$/g, "loadUpdateChunk")
208-
.replace(/\$moduleCache\$/g, RuntimeGlobals.moduleCache)
209-
.replace(/\$moduleFactories\$/g, RuntimeGlobals.moduleFactories)
210-
.replace(
211-
/\$ensureChunkHandlers\$/g,
212-
RuntimeGlobals.ensureChunkHandlers
213-
)
214-
.replace(/\$hasOwnProperty\$/g, RuntimeGlobals.hasOwnProperty)
215-
.replace(/\$hmrModuleData\$/g, RuntimeGlobals.hmrModuleData)
216-
.replace(
217-
/\$hmrDownloadUpdateHandlers\$/g,
218-
RuntimeGlobals.hmrDownloadUpdateHandlers
219-
)
220-
.replace(
221-
/\$hmrInvalidateModuleHandlers\$/g,
222-
RuntimeGlobals.hmrInvalidateModuleHandlers
223-
)
205+
generateJavascriptHMR("importScripts")
224206
])
225207
: "// no HMR",
226208
"",

0 commit comments

Comments
 (0)