@taro-hmr-compile/plugin-webpack 0.0.1-alpha.8 → 0.0.1-alpha.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/compile/hmr-compiler-loader.js +44 -7
- package/dist/compile/hmr-compiler-loader.js.map +1 -1
- package/dist/compile/lazy-compiler-loader.d.ts +1 -0
- package/dist/compile/lazy-compiler-loader.js +7 -3
- package/dist/compile/lazy-compiler-loader.js.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/patch/hmr-patch-processor.js +2 -1
- package/dist/patch/hmr-patch-processor.js.map +1 -1
- package/dist/patch/hmr-patch-runtime-plugin.js +1 -1
- package/dist/patch/types.d.ts +1 -0
- package/dist/patch/utils.d.ts +2 -0
- package/dist/patch/utils.js +8 -2
- package/dist/patch/utils.js.map +1 -1
- package/package.json +2 -2
- package/src/compile/hmr-compiler-loader.ts +43 -7
- package/src/compile/lazy-compiler-loader.ts +9 -3
- package/src/index.ts +2 -0
- package/src/patch/hmr-patch-processor.ts +3 -1
- package/src/patch/hmr-patch-runtime-plugin.ts +1 -1
- package/src/patch/types.ts +1 -0
- package/src/patch/utils.ts +7 -2
|
@@ -51,22 +51,29 @@ const CORE_RUNTIME_REQUEST = require.resolve('@taro-hmr-compile/core/runtime');
|
|
|
51
51
|
const injectAppHmrRuntime = (source, debugNamespaces = '') => {
|
|
52
52
|
const ast = parser.parse(source, { sourceType: 'module' });
|
|
53
53
|
const buildHmrCode = template_1.default.statements(`
|
|
54
|
-
import {
|
|
54
|
+
import { updatePatchContext, mergePatches, enableLog as enableHmrCoreLog } from ${JSON.stringify(CORE_RUNTIME_REQUEST)}
|
|
55
55
|
import { log, enableLog as enableHmrWebpackLog } from ${JSON.stringify(LOG_REQUEST)}
|
|
56
56
|
enableHmrCoreLog(${JSON.stringify(debugNamespaces)})
|
|
57
57
|
enableHmrWebpackLog(${JSON.stringify(debugNamespaces)})
|
|
58
58
|
globalThis.log = log.extend('runtime')
|
|
59
|
+
updatePatchContext.initialize(${webpack_1.default.RuntimeGlobals.getFullHash}())
|
|
59
60
|
globalThis.miniHmrApplyPatch = async (patches)=>{
|
|
61
|
+
let transaction
|
|
60
62
|
try {
|
|
61
63
|
const { miniHmr } = __webpack_require__
|
|
62
64
|
const bootstrapPatch = patches.find(patch => patch.type === 'bootstrap')
|
|
65
|
+
const shouldApplyBootstrapPatch = miniHmr.shouldApplyBootstrapPatch(bootstrapPatch)
|
|
66
|
+
const currentHash = ${webpack_1.default.RuntimeGlobals.getFullHash}()
|
|
67
|
+
const updatePatch = mergePatches(currentHash, patches)
|
|
63
68
|
|
|
64
|
-
if (
|
|
69
|
+
if (shouldApplyBootstrapPatch) miniHmr.applyBootstrapPatch(bootstrapPatch)
|
|
70
|
+
if (!updatePatch) return
|
|
65
71
|
|
|
66
|
-
|
|
67
|
-
hmrState.setLastFullHash(updatePatch?.toHash ?? ${webpack_1.default.RuntimeGlobals.getFullHash}())
|
|
72
|
+
transaction = updatePatchContext.beginTransaction({fromHash: currentHash,toHash: updatePatch.toHash})
|
|
68
73
|
await miniHmr.applyUpdatePatch(updatePatch)
|
|
74
|
+
updatePatchContext.completeTransaction(transaction.id)
|
|
69
75
|
} catch (error) {
|
|
76
|
+
if (transaction) updatePatchContext.abortTransaction(transaction.id)
|
|
70
77
|
console.error('[taro-hmr-compile] patch apply failed', error)
|
|
71
78
|
return Promise.resolve()
|
|
72
79
|
}
|
|
@@ -102,6 +109,29 @@ const transformPageConfig = (source, sourceFileName) => {
|
|
|
102
109
|
});
|
|
103
110
|
});
|
|
104
111
|
};
|
|
112
|
+
const isHotAcceptCall = (node) => {
|
|
113
|
+
if (!t.isCallExpression(node))
|
|
114
|
+
return false;
|
|
115
|
+
const { callee } = node;
|
|
116
|
+
if (!t.isMemberExpression(callee) || !t.isIdentifier(callee.property, { name: 'accept' }))
|
|
117
|
+
return false;
|
|
118
|
+
const hot = callee.object;
|
|
119
|
+
return t.isMemberExpression(hot) && t.isIdentifier(hot.object, { name: 'module' }) && t.isIdentifier(hot.property, { name: 'hot' });
|
|
120
|
+
};
|
|
121
|
+
const hasHotAccept = (programPath) => {
|
|
122
|
+
return programPath.node.body.some(statement => {
|
|
123
|
+
if (t.isExpressionStatement(statement))
|
|
124
|
+
return isHotAcceptCall(statement.expression);
|
|
125
|
+
if (!t.isIfStatement(statement))
|
|
126
|
+
return false;
|
|
127
|
+
const { consequent } = statement;
|
|
128
|
+
if (t.isExpressionStatement(consequent))
|
|
129
|
+
return isHotAcceptCall(consequent.expression);
|
|
130
|
+
if (!t.isBlockStatement(consequent))
|
|
131
|
+
return false;
|
|
132
|
+
return consequent.body.some(node => t.isExpressionStatement(node) && isHotAcceptCall(node.expression));
|
|
133
|
+
});
|
|
134
|
+
};
|
|
105
135
|
(0, traverse_1.default)(ast, {
|
|
106
136
|
Program(programPath) {
|
|
107
137
|
// 判断是否存在 createPageConfig 引用
|
|
@@ -119,6 +149,7 @@ const transformPageConfig = (source, sourceFileName) => {
|
|
|
119
149
|
return;
|
|
120
150
|
// 判断是否存在 withHmrPageConfig 引用
|
|
121
151
|
const hasWithHmrPageConfigBinding = programPath.scope.hasBinding(WITH_HMR_PAGE_CONFIG);
|
|
152
|
+
const shouldInjectHotAccept = !hasHotAccept(programPath);
|
|
122
153
|
// 生成 withHmrPageConfig 的别名
|
|
123
154
|
const wrapperIdentifier = hasWithHmrPageConfigBinding ? programPath.scope.generateUidIdentifier(WITH_HMR_PAGE_CONFIG) : t.identifier(WITH_HMR_PAGE_CONFIG);
|
|
124
155
|
// 生成 runtime import
|
|
@@ -127,23 +158,29 @@ const transformPageConfig = (source, sourceFileName) => {
|
|
|
127
158
|
return template_1.default.statement(`import { ${WITH_HMR_PAGE_CONFIG} } from ${JSON.stringify(CORE_RUNTIME_REQUEST)};`)();
|
|
128
159
|
return template_1.default.statement(`import { ${WITH_HMR_PAGE_CONFIG} as %%WRAPPER%% } from ${JSON.stringify(CORE_RUNTIME_REQUEST)};`)({ WRAPPER: wrapperIdentifier });
|
|
129
160
|
})();
|
|
161
|
+
let transformedPageConfig = false;
|
|
130
162
|
programPath.traverse({
|
|
131
163
|
CallExpression(CallExpressionPath) {
|
|
132
164
|
const { node: CallExpressionNode } = CallExpressionPath;
|
|
133
165
|
if (!t.isIdentifier(CallExpressionNode.callee, { name: CREATE_PAGE_CONFIG }))
|
|
134
166
|
return;
|
|
135
167
|
const [_, pageName] = CallExpressionNode.arguments;
|
|
136
|
-
const wrappedPageConfig = template_1.default.expression(`%%WRAPPER%%(%%PAGE_CONFIG%%, %%PAGE_NAME
|
|
168
|
+
const wrappedPageConfig = template_1.default.expression(`%%WRAPPER%%(%%PAGE_CONFIG%%, %%PAGE_NAME%%, typeof module !== 'undefined' ? module.hot : undefined)`)({
|
|
137
169
|
WRAPPER: wrapperIdentifier,
|
|
138
170
|
PAGE_CONFIG: CallExpressionNode,
|
|
139
171
|
PAGE_NAME: pageName,
|
|
140
172
|
});
|
|
141
|
-
if (!hasImportWithHmrPageConfig(programPath))
|
|
142
|
-
programPath.unshiftContainer('body', runtimeImport);
|
|
143
173
|
CallExpressionPath.replaceWith(wrappedPageConfig);
|
|
144
174
|
CallExpressionPath.skip();
|
|
175
|
+
transformedPageConfig = true;
|
|
145
176
|
}
|
|
146
177
|
});
|
|
178
|
+
if (!transformedPageConfig)
|
|
179
|
+
return;
|
|
180
|
+
programPath.unshiftContainer('body', runtimeImport);
|
|
181
|
+
if (shouldInjectHotAccept) {
|
|
182
|
+
programPath.pushContainer('body', template_1.default.statement(`if (typeof module !== 'undefined' && module.hot) module.hot.accept();`)());
|
|
183
|
+
}
|
|
147
184
|
},
|
|
148
185
|
});
|
|
149
186
|
return (0, generator_1.default)(ast, { sourceMaps: true, sourceFileName }, source).code;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hmr-compiler-loader.js","sourceRoot":"","sources":["../../src/compile/hmr-compiler-loader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iEAAwC;AACxC,sDAAuC;AACvC,+DAAsC;AACtC,+DAAkD;AAClD,gDAAiC;AAEjC,sDAA6B;AAE7B,MAAM,kBAAkB,GAAG,kBAAkB,CAAA;AAE7C,MAAM,oBAAoB,GAAG,mBAAmB,CAAA;AAEhD,MAAM,oBAAoB,GAAG,iBAAiB,CAAA;AAE9C,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;AAE7C,MAAM,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAA;AAEvE,MAAM,mBAAmB,GAAG,CAAC,MAAc,EAAE,eAAe,GAAG,EAAE,EAAE,EAAE;IAGxE,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EAAC,UAAU,EAAE,QAAQ,EAAC,CAAC,CAAA;IAExD,MAAM,YAAY,GAAG,kBAAQ,CAAC,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"hmr-compiler-loader.js","sourceRoot":"","sources":["../../src/compile/hmr-compiler-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,11 +8,12 @@ const path_1 = __importDefault(require("path"));
|
|
|
8
8
|
const utils_1 = require("../utils");
|
|
9
9
|
const compile_state_1 = require("./compile-state");
|
|
10
10
|
const createReactShell = (opt) => {
|
|
11
|
-
const { page, compileUrl } = opt;
|
|
11
|
+
const { page, compileUrl, memo } = opt;
|
|
12
12
|
return `
|
|
13
13
|
import { PageShell } from ${JSON.stringify(require.resolve('@taro-hmr-compile/core/runtime'))}
|
|
14
|
+
${memo ? "import React from 'react'" : ''}
|
|
14
15
|
const Page = () => <PageShell page={${JSON.stringify(page)}} compileUrl={${JSON.stringify(compileUrl)}}/>
|
|
15
|
-
export default Page
|
|
16
|
+
export default ${memo ? 'React.memo(Page)' : 'Page'}
|
|
16
17
|
`;
|
|
17
18
|
};
|
|
18
19
|
exports.createReactShell = createReactShell;
|
|
@@ -21,6 +22,9 @@ const createShell = (opt) => {
|
|
|
21
22
|
return (0, exports.createReactShell)(opt);
|
|
22
23
|
throw new Error(`unsupported framework: ${opt.framework}`);
|
|
23
24
|
};
|
|
25
|
+
const isMemoPage = (source) => {
|
|
26
|
+
return /\bexport\s+default\s+(?:(?:React\.)?memo|observer)\s*\(/.test(source);
|
|
27
|
+
};
|
|
24
28
|
const lazyCompilerLoader = function (source) {
|
|
25
29
|
const { appPath, framework, appConfig, sourcePath, compileUrl } = this.getOptions();
|
|
26
30
|
const { dir: resourceDir, name: resourceName } = path_1.default.parse(path_1.default.relative(sourcePath, this.resourcePath));
|
|
@@ -28,7 +32,7 @@ const lazyCompilerLoader = function (source) {
|
|
|
28
32
|
const isPageEntry = (0, utils_1.getAllPages)(appConfig).includes(resourcePath);
|
|
29
33
|
if (!isPageEntry || (0, compile_state_1.isPageCompiled)(appPath, resourcePath))
|
|
30
34
|
return source;
|
|
31
|
-
return createShell({ page: resourcePath, framework, compileUrl });
|
|
35
|
+
return createShell({ page: resourcePath, framework, compileUrl, memo: isMemoPage(source) });
|
|
32
36
|
};
|
|
33
37
|
exports.default = lazyCompilerLoader;
|
|
34
38
|
//# sourceMappingURL=lazy-compiler-loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lazy-compiler-loader.js","sourceRoot":"","sources":["../../src/compile/lazy-compiler-loader.ts"],"names":[],"mappings":";;;;;;AACA,gDAAwB;AACxB,oCAAoC;AACpC,mDAA8C;
|
|
1
|
+
{"version":3,"file":"lazy-compiler-loader.js","sourceRoot":"","sources":["../../src/compile/lazy-compiler-loader.ts"],"names":[],"mappings":";;;;;;AACA,gDAAwB;AACxB,oCAAoC;AACpC,mDAA8C;AAWvC,MAAM,gBAAgB,GAAG,CAAC,GAAmB,EAAE,EAAE;IACpD,MAAM,EAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAC,GAAG,GAAG,CAAA;IACpC,OAAO;gCACqB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;MAC3F,IAAI,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,EAAE;0CACH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;qBACpF,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM;KAClD,CAAA;AACL,CAAC,CAAA;AARY,QAAA,gBAAgB,oBAQ5B;AAED,MAAM,WAAW,GAAG,CAAC,GAAmB,EAAE,EAAE;IACxC,IAAI,GAAG,CAAC,SAAS,KAAK,OAAO;QAAE,OAAO,IAAA,wBAAgB,EAAC,GAAG,CAAC,CAAA;IAC3D,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,SAAS,EAAE,CAAC,CAAA;AAC9D,CAAC,CAAA;AAED,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,EAAE;IAClC,OAAO,yDAAyD,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AACjF,CAAC,CAAA;AAWD,MAAM,kBAAkB,GAA4C,UAAU,MAAM;IAChF,MAAM,EAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;IAEjF,MAAM,EAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAC,GAAG,cAAI,CAAC,KAAK,CAAC,cAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAA;IAEvG,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;IAEzD,MAAM,WAAW,GAAG,IAAA,mBAAW,EAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;IAEjE,IAAI,CAAC,WAAW,IAAI,IAAA,8BAAc,EAAC,OAAO,EAAE,YAAY,CAAC;QAAE,OAAO,MAAM,CAAA;IAExE,OAAO,WAAW,CAAC,EAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,EAAC,CAAC,CAAA;AAC7F,CAAC,CAAA;AAED,kBAAe,kBAAkB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -44,6 +44,7 @@ exports.default = (ctx, pluginOpts) => {
|
|
|
44
44
|
const compileUrl = `http://${host}:${port}/compile`;
|
|
45
45
|
if (port !== preferredPort)
|
|
46
46
|
console.warn(`[taro-hmr-compile] 端口 ${preferredPort} 已被占用,自动使用端口 ${port}`);
|
|
47
|
+
chain.optimization.usedExports(false);
|
|
47
48
|
chain.module
|
|
48
49
|
.rule('lazy-compiler')
|
|
49
50
|
.test(/\.[jt]sx?$/)
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,7 +50,8 @@ class HmrPatchProcessor {
|
|
|
50
50
|
return Array.from(tempPatchInfo.removedModules.values());
|
|
51
51
|
return Array.from(tempPatchInfo.removedModules.values()).filter(item => changedModuleIds.has(item));
|
|
52
52
|
})();
|
|
53
|
-
|
|
53
|
+
const { runtimeModules } = tempPatchInfo;
|
|
54
|
+
this.recentUpdatePatches.push({ type: 'update', moduleFactories, runtimeModules, fromHash, toHash, removedModules });
|
|
54
55
|
const patchHistoryLimit = Math.max(1, (_a = this.opts.patchHistoryLimit) !== null && _a !== void 0 ? _a : constants_1.DEFAULT_HMR_PATCH_HISTORY_LIMIT);
|
|
55
56
|
if (this.recentUpdatePatches.length <= patchHistoryLimit)
|
|
56
57
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hmr-patch-processor.js","sourceRoot":"","sources":["../../src/patch/hmr-patch-processor.ts"],"names":[],"mappings":";;;;;;AACA,iEAAwC;AACxC,mCAIiB;AACjB,mCAAkC;AAElC,4CAA6D;AA0B7D,MAAa,iBAAiB;IAW1B,YAAY,IAAuC;QAVlC,uBAAkB,GAAuB,IAAI,GAAG,EAAE,CAAA;QAElD,oCAA+B,GAAG,IAAI,OAAO,EAAmC,CAAA;QAEhF,2BAAsB,GAA2B,IAAI,GAAG,EAAE,CAAA;QAEnE,wBAAmB,GAAwB,EAAE,CAAA;QAKjD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IACpB,CAAC;IAEO,6BAA6B,CAAC,QAAgB,EAAE,MAAc;QAClE,MAAM,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAElE,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAE9D,6CAA6C;QAC7C,IAAI,CAAC,gBAAgB,IAAI,CAAC,cAAc;YAAE,OAAM;QAEhD,iCAAiC;QACjC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAA;QAClD,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;QAEhE,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAA;QAC1C,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;;YACzB,MAAM,eAAe,GAAG,MAAA,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,0CAAE,WAAW,CAAA;YACnE,MAAM,aAAa,GAAG,MAAA,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,0CAAE,WAAW,CAAA;YAC/D,IAAI,eAAe,KAAK,aAAa;gBAAE,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACzE,CAAC,CAAC,CAAA;QAEF,OAAO,gBAAgB,CAAA;IAC3B,CAAC;IAED,aAAa,CAAC,GAAyB;;QACnC,MAAM,EAAC,QAAQ,EAAE,MAAM,EAAC,GAAG,GAAG,CAAA;QAE9B,MAAM,aAAa,GAAG,IAAA,4BAAoB,EAAC,GAAG,CAAC,CAAA;QAE/C,MAAM,gBAAgB,GAAG,IAAI,CAAC,6BAA6B,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QAE7E,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE;YAC1B,IAAI,CAAC,gBAAgB;gBAAE,OAAO,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAA;YAChF,OAAO,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;QACjH,CAAC,CAAC,EAAE,CAAA;QAEJ,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE;YACzB,IAAI,CAAC,gBAAgB;gBAAE,OAAO,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAA;YAC/E,OAAO,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;QACvG,CAAC,CAAC,EAAE,CAAA;QAEJ,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"hmr-patch-processor.js","sourceRoot":"","sources":["../../src/patch/hmr-patch-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -67,7 +67,7 @@ ${webpack_1.default.RuntimeGlobals.require}.miniHmr.preparePatch = function(patc
|
|
|
67
67
|
currentUpdateChunks = {};
|
|
68
68
|
currentUpdate = Object.assign({}, patch.modules);
|
|
69
69
|
currentUpdateRemovedChunks = [];
|
|
70
|
-
currentUpdateRuntime = [];
|
|
70
|
+
currentUpdateRuntime = patch.runtimeModules ? patch.runtimeModules.slice() : [];
|
|
71
71
|
|
|
72
72
|
if (patch.removedModules) {
|
|
73
73
|
patch.removedModules.forEach(function(moduleId) {
|
package/dist/patch/types.d.ts
CHANGED
package/dist/patch/utils.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as t from "@babel/types";
|
|
1
2
|
import { Asset } from "webpack";
|
|
2
3
|
import { ModuleFactory } from "./types";
|
|
3
4
|
import { UpdatePatchSource } from "./types";
|
|
@@ -11,6 +12,7 @@ export interface ParseHotUpdateAssetsOptions {
|
|
|
11
12
|
*/
|
|
12
13
|
export declare const parseHotUpdateAssets: (opt: ParseHotUpdateAssetsOptions) => {
|
|
13
14
|
moduleFactories: Map<string, ModuleFactory>;
|
|
15
|
+
runtimeModules: t.Expression[];
|
|
14
16
|
removedModules: Set<string>;
|
|
15
17
|
};
|
|
16
18
|
/**
|
package/dist/patch/utils.js
CHANGED
|
@@ -72,6 +72,7 @@ const parseModuleFactories = (expression) => {
|
|
|
72
72
|
const parseHotUpdateAssets = (opt) => {
|
|
73
73
|
const { manifests, scripts } = opt;
|
|
74
74
|
const moduleFactories = new Map();
|
|
75
|
+
const runtimeModules = [];
|
|
75
76
|
scripts.forEach(asset => {
|
|
76
77
|
const ast = (0, parser_1.parse)(asset.source.source().toString(), { sourceType: 'script' });
|
|
77
78
|
(0, traverse_1.default)(ast, {
|
|
@@ -81,10 +82,12 @@ const parseHotUpdateAssets = (opt) => {
|
|
|
81
82
|
return;
|
|
82
83
|
if (!t.isStringLiteral(callee.property) || !callee.property.value.startsWith('webpackHotUpdate'))
|
|
83
84
|
return;
|
|
84
|
-
const [
|
|
85
|
+
const [, modules, runtime] = nodePath.node.arguments;
|
|
85
86
|
if (!t.isObjectExpression(modules))
|
|
86
87
|
return;
|
|
87
88
|
parseModuleFactories(modules).forEach(module => moduleFactories.set(module.moduleId, module));
|
|
89
|
+
if (t.isExpression(runtime))
|
|
90
|
+
runtimeModules.push(runtime);
|
|
88
91
|
},
|
|
89
92
|
});
|
|
90
93
|
});
|
|
@@ -94,7 +97,7 @@ const parseHotUpdateAssets = (opt) => {
|
|
|
94
97
|
const { m: tempRemoveModules = [] } = manifest;
|
|
95
98
|
tempRemoveModules.forEach(removedModule => removedModules.add(String(removedModule)));
|
|
96
99
|
}, []);
|
|
97
|
-
return { moduleFactories, removedModules };
|
|
100
|
+
return { moduleFactories, runtimeModules, removedModules };
|
|
98
101
|
};
|
|
99
102
|
exports.parseHotUpdateAssets = parseHotUpdateAssets;
|
|
100
103
|
/**
|
|
@@ -130,6 +133,7 @@ const mergeUpdatePatches = (basePatch, nextPatch) => {
|
|
|
130
133
|
fromHash: basePatch.fromHash,
|
|
131
134
|
toHash: nextPatch.toHash,
|
|
132
135
|
moduleFactories: [...moduleFactories.values()],
|
|
136
|
+
runtimeModules: [...basePatch.runtimeModules, ...nextPatch.runtimeModules],
|
|
133
137
|
removedModules: [...removedModules],
|
|
134
138
|
};
|
|
135
139
|
};
|
|
@@ -145,6 +149,7 @@ const generatePatchAssetSource = (opt) => {
|
|
|
145
149
|
fromHash: "FROM_HASH",
|
|
146
150
|
toHash: "TO_HASH",
|
|
147
151
|
modules: MODULES,
|
|
152
|
+
runtimeModules: RUNTIME_MODULES,
|
|
148
153
|
removedModules: REMOVED_MODULES
|
|
149
154
|
})`);
|
|
150
155
|
const buildPatchAsset = template_1.default.program('module.exports = PATCHES;');
|
|
@@ -163,6 +168,7 @@ const generatePatchAssetSource = (opt) => {
|
|
|
163
168
|
FROM_HASH: patch.fromHash,
|
|
164
169
|
TO_HASH: patch.toHash,
|
|
165
170
|
MODULES: t.objectExpression(updateModules),
|
|
171
|
+
RUNTIME_MODULES: t.arrayExpression(patch.runtimeModules),
|
|
166
172
|
REMOVED_MODULES: t.arrayExpression(patch.removedModules.map(moduleId => t.stringLiteral(moduleId))),
|
|
167
173
|
});
|
|
168
174
|
}),
|
package/dist/patch/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/patch/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAkC;AAClC,0CAAoC;AACpC,+DAAuC;AACvC,+DAAuC;AACvC,iEAAyC;AAOzC;;;GAGG;AACH,MAAM,oBAAoB,GAAG,CAAC,UAA4B,EAAE,EAAE;IAE1D,MAAM,eAAe,GAAG,IAAI,GAAG,EAAyB,CAAA;IAExD,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,UAAU,CAAC;QAAE,OAAO,eAAe,CAAC,MAAM,EAAE,CAAA;IAEtE,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QACrC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;QAE7H,MAAM,EAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAC,GAAG,QAAQ,CAAA;QAEtC,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE;YACnB,IAAI,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC;gBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YAC/E,IAAI,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ;gBAAE,OAAO,GAAG,CAAC,IAAI,CAAA;YAC9D,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;QAChE,CAAC,CAAC,EAAE,CAAA;QAEJ,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAC,OAAO,EAAE,QAAQ,EAAC,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;IAEF,OAAO,eAAe,CAAC,MAAM,EAAE,CAAA;AACnC,CAAC,CAAA;AAQD;;;GAGG;AACI,MAAM,oBAAoB,GAAG,CAAC,GAAgC,EAAE,EAAE;IACrE,MAAM,EAAC,SAAS,EAAE,OAAO,EAAC,GAAG,GAAG,CAAA;IAEhC,MAAM,eAAe,GAAG,IAAI,GAAG,EAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/patch/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@taro-hmr-compile/plugin-webpack",
|
|
3
|
-
"version": "0.0.1-alpha.
|
|
3
|
+
"version": "0.0.1-alpha.9",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"@babel/template": "^7.29.7",
|
|
45
45
|
"@babel/traverse": "^7.29.8",
|
|
46
46
|
"@babel/types": "^7.29.8",
|
|
47
|
-
"@taro-hmr-compile/core": "0.0.1-alpha.
|
|
47
|
+
"@taro-hmr-compile/core": "0.0.1-alpha.9",
|
|
48
48
|
"debug": "^4.4.3",
|
|
49
49
|
"tapable": "^2.3.3",
|
|
50
50
|
"webpack-sources": "^3.5.1"
|
|
@@ -22,22 +22,29 @@ export const injectAppHmrRuntime = (source: string, debugNamespaces = '') => {
|
|
|
22
22
|
const ast = parser.parse(source, {sourceType: 'module'})
|
|
23
23
|
|
|
24
24
|
const buildHmrCode = template.statements(`
|
|
25
|
-
import {
|
|
25
|
+
import { updatePatchContext, mergePatches, enableLog as enableHmrCoreLog } from ${JSON.stringify(CORE_RUNTIME_REQUEST)}
|
|
26
26
|
import { log, enableLog as enableHmrWebpackLog } from ${JSON.stringify(LOG_REQUEST)}
|
|
27
27
|
enableHmrCoreLog(${JSON.stringify(debugNamespaces)})
|
|
28
28
|
enableHmrWebpackLog(${JSON.stringify(debugNamespaces)})
|
|
29
29
|
globalThis.log = log.extend('runtime')
|
|
30
|
+
updatePatchContext.initialize(${webpack.RuntimeGlobals.getFullHash}())
|
|
30
31
|
globalThis.miniHmrApplyPatch = async (patches)=>{
|
|
32
|
+
let transaction
|
|
31
33
|
try {
|
|
32
34
|
const { miniHmr } = __webpack_require__
|
|
33
35
|
const bootstrapPatch = patches.find(patch => patch.type === 'bootstrap')
|
|
36
|
+
const shouldApplyBootstrapPatch = miniHmr.shouldApplyBootstrapPatch(bootstrapPatch)
|
|
37
|
+
const currentHash = ${webpack.RuntimeGlobals.getFullHash}()
|
|
38
|
+
const updatePatch = mergePatches(currentHash, patches)
|
|
34
39
|
|
|
35
|
-
if (
|
|
40
|
+
if (shouldApplyBootstrapPatch) miniHmr.applyBootstrapPatch(bootstrapPatch)
|
|
41
|
+
if (!updatePatch) return
|
|
36
42
|
|
|
37
|
-
|
|
38
|
-
hmrState.setLastFullHash(updatePatch?.toHash ?? ${webpack.RuntimeGlobals.getFullHash}())
|
|
43
|
+
transaction = updatePatchContext.beginTransaction({fromHash: currentHash,toHash: updatePatch.toHash})
|
|
39
44
|
await miniHmr.applyUpdatePatch(updatePatch)
|
|
45
|
+
updatePatchContext.completeTransaction(transaction.id)
|
|
40
46
|
} catch (error) {
|
|
47
|
+
if (transaction) updatePatchContext.abortTransaction(transaction.id)
|
|
41
48
|
console.error('[taro-hmr-compile] patch apply failed', error)
|
|
42
49
|
return Promise.resolve()
|
|
43
50
|
}
|
|
@@ -75,6 +82,26 @@ export const transformPageConfig = (source: string, sourceFileName?: string) =>
|
|
|
75
82
|
})
|
|
76
83
|
}
|
|
77
84
|
|
|
85
|
+
const isHotAcceptCall = (node: t.Node | null | undefined) => {
|
|
86
|
+
if (!t.isCallExpression(node)) return false
|
|
87
|
+
const {callee} = node
|
|
88
|
+
if (!t.isMemberExpression(callee) || !t.isIdentifier(callee.property, {name: 'accept'})) return false
|
|
89
|
+
const hot = callee.object
|
|
90
|
+
return t.isMemberExpression(hot) && t.isIdentifier(hot.object, {name: 'module'}) && t.isIdentifier(hot.property, {name: 'hot'})
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const hasHotAccept = (programPath: NodePath<t.Program>) => {
|
|
94
|
+
return programPath.node.body.some(statement => {
|
|
95
|
+
if (t.isExpressionStatement(statement)) return isHotAcceptCall(statement.expression)
|
|
96
|
+
if (!t.isIfStatement(statement)) return false
|
|
97
|
+
|
|
98
|
+
const {consequent} = statement
|
|
99
|
+
if (t.isExpressionStatement(consequent)) return isHotAcceptCall(consequent.expression)
|
|
100
|
+
if (!t.isBlockStatement(consequent)) return false
|
|
101
|
+
return consequent.body.some(node => t.isExpressionStatement(node) && isHotAcceptCall(node.expression))
|
|
102
|
+
})
|
|
103
|
+
}
|
|
104
|
+
|
|
78
105
|
traverse(ast, {
|
|
79
106
|
Program(programPath) {
|
|
80
107
|
|
|
@@ -92,6 +119,7 @@ export const transformPageConfig = (source: string, sourceFileName?: string) =>
|
|
|
92
119
|
|
|
93
120
|
// 判断是否存在 withHmrPageConfig 引用
|
|
94
121
|
const hasWithHmrPageConfigBinding = programPath.scope.hasBinding(WITH_HMR_PAGE_CONFIG)
|
|
122
|
+
const shouldInjectHotAccept = !hasHotAccept(programPath)
|
|
95
123
|
|
|
96
124
|
// 生成 withHmrPageConfig 的别名
|
|
97
125
|
const wrapperIdentifier = hasWithHmrPageConfigBinding ? programPath.scope.generateUidIdentifier(WITH_HMR_PAGE_CONFIG) : t.identifier(WITH_HMR_PAGE_CONFIG)
|
|
@@ -102,24 +130,32 @@ export const transformPageConfig = (source: string, sourceFileName?: string) =>
|
|
|
102
130
|
return template.statement(`import { ${WITH_HMR_PAGE_CONFIG} as %%WRAPPER%% } from ${JSON.stringify(CORE_RUNTIME_REQUEST)};`)({WRAPPER: wrapperIdentifier})
|
|
103
131
|
})()
|
|
104
132
|
|
|
133
|
+
let transformedPageConfig = false
|
|
134
|
+
|
|
105
135
|
programPath.traverse({
|
|
106
136
|
CallExpression(CallExpressionPath) {
|
|
107
137
|
const {node: CallExpressionNode} = CallExpressionPath
|
|
108
138
|
if (!t.isIdentifier(CallExpressionNode.callee, {name: CREATE_PAGE_CONFIG})) return
|
|
109
139
|
const [_, pageName] = CallExpressionNode.arguments
|
|
110
|
-
const wrappedPageConfig = template.expression(`%%WRAPPER%%(%%PAGE_CONFIG%%, %%PAGE_NAME
|
|
140
|
+
const wrappedPageConfig = template.expression(`%%WRAPPER%%(%%PAGE_CONFIG%%, %%PAGE_NAME%%, typeof module !== 'undefined' ? module.hot : undefined)`)({
|
|
111
141
|
WRAPPER: wrapperIdentifier,
|
|
112
142
|
PAGE_CONFIG: CallExpressionNode,
|
|
113
143
|
PAGE_NAME: pageName,
|
|
114
144
|
})
|
|
115
145
|
|
|
116
|
-
if (!hasImportWithHmrPageConfig(programPath)) programPath.unshiftContainer('body', runtimeImport)
|
|
117
|
-
|
|
118
146
|
CallExpressionPath.replaceWith(wrappedPageConfig)
|
|
119
147
|
CallExpressionPath.skip()
|
|
148
|
+
transformedPageConfig = true
|
|
120
149
|
}
|
|
121
150
|
})
|
|
122
151
|
|
|
152
|
+
if (!transformedPageConfig) return
|
|
153
|
+
|
|
154
|
+
programPath.unshiftContainer('body', runtimeImport)
|
|
155
|
+
if (shouldInjectHotAccept) {
|
|
156
|
+
programPath.pushContainer('body', template.statement(`if (typeof module !== 'undefined' && module.hot) module.hot.accept();`)())
|
|
157
|
+
}
|
|
158
|
+
|
|
123
159
|
},
|
|
124
160
|
})
|
|
125
161
|
|
|
@@ -9,14 +9,16 @@ interface CreateShellOpt {
|
|
|
9
9
|
page: string
|
|
10
10
|
framework: 'react'
|
|
11
11
|
compileUrl: string
|
|
12
|
+
memo: boolean
|
|
12
13
|
}
|
|
13
14
|
|
|
14
15
|
export const createReactShell = (opt: CreateShellOpt) => {
|
|
15
|
-
const {page, compileUrl} = opt
|
|
16
|
+
const {page, compileUrl, memo} = opt
|
|
16
17
|
return `
|
|
17
18
|
import { PageShell } from ${JSON.stringify(require.resolve('@taro-hmr-compile/core/runtime'))}
|
|
19
|
+
${memo ? "import React from 'react'" : ''}
|
|
18
20
|
const Page = () => <PageShell page={${JSON.stringify(page)}} compileUrl={${JSON.stringify(compileUrl)}}/>
|
|
19
|
-
export default Page
|
|
21
|
+
export default ${memo ? 'React.memo(Page)' : 'Page'}
|
|
20
22
|
`
|
|
21
23
|
}
|
|
22
24
|
|
|
@@ -25,6 +27,10 @@ const createShell = (opt: CreateShellOpt) => {
|
|
|
25
27
|
throw new Error(`unsupported framework: ${opt.framework}`)
|
|
26
28
|
}
|
|
27
29
|
|
|
30
|
+
const isMemoPage = (source: string) => {
|
|
31
|
+
return /\bexport\s+default\s+(?:(?:React\.)?memo|observer)\s*\(/.test(source)
|
|
32
|
+
}
|
|
33
|
+
|
|
28
34
|
|
|
29
35
|
interface LoaderOptions {
|
|
30
36
|
appPath: string
|
|
@@ -45,7 +51,7 @@ const lazyCompilerLoader: LoaderDefinitionFunction<LoaderOptions> = function (so
|
|
|
45
51
|
|
|
46
52
|
if (!isPageEntry || isPageCompiled(appPath, resourcePath)) return source
|
|
47
53
|
|
|
48
|
-
return createShell({page: resourcePath, framework, compileUrl})
|
|
54
|
+
return createShell({page: resourcePath, framework, compileUrl, memo: isMemoPage(source)})
|
|
49
55
|
}
|
|
50
56
|
|
|
51
57
|
export default lazyCompilerLoader
|
package/src/index.ts
CHANGED
|
@@ -50,6 +50,8 @@ export default (ctx: IPluginContext, pluginOpts: Partial<WebpackHmrCompileOpt>)
|
|
|
50
50
|
|
|
51
51
|
if (port !== preferredPort) console.warn(`[taro-hmr-compile] 端口 ${preferredPort} 已被占用,自动使用端口 ${port}`)
|
|
52
52
|
|
|
53
|
+
chain.optimization.usedExports(false)
|
|
54
|
+
|
|
53
55
|
chain.module
|
|
54
56
|
.rule('lazy-compiler')
|
|
55
57
|
.test(/\.[jt]sx?$/)
|
|
@@ -87,7 +87,9 @@ export class HmrPatchProcessor {
|
|
|
87
87
|
return Array.from(tempPatchInfo.removedModules.values()).filter(item => changedModuleIds.has(item))
|
|
88
88
|
})()
|
|
89
89
|
|
|
90
|
-
|
|
90
|
+
const {runtimeModules} = tempPatchInfo
|
|
91
|
+
|
|
92
|
+
this.recentUpdatePatches.push({type: 'update', moduleFactories, runtimeModules, fromHash, toHash, removedModules})
|
|
91
93
|
|
|
92
94
|
const patchHistoryLimit = Math.max(1, this.opts.patchHistoryLimit ?? DEFAULT_HMR_PATCH_HISTORY_LIMIT)
|
|
93
95
|
|
|
@@ -64,7 +64,7 @@ ${webpack.RuntimeGlobals.require}.miniHmr.preparePatch = function(patch, applyHa
|
|
|
64
64
|
currentUpdateChunks = {};
|
|
65
65
|
currentUpdate = Object.assign({}, patch.modules);
|
|
66
66
|
currentUpdateRemovedChunks = [];
|
|
67
|
-
currentUpdateRuntime = [];
|
|
67
|
+
currentUpdateRuntime = patch.runtimeModules ? patch.runtimeModules.slice() : [];
|
|
68
68
|
|
|
69
69
|
if (patch.removedModules) {
|
|
70
70
|
patch.removedModules.forEach(function(moduleId) {
|
package/src/patch/types.ts
CHANGED
package/src/patch/utils.ts
CHANGED
|
@@ -50,6 +50,7 @@ export const parseHotUpdateAssets = (opt: ParseHotUpdateAssetsOptions) => {
|
|
|
50
50
|
const {manifests, scripts} = opt
|
|
51
51
|
|
|
52
52
|
const moduleFactories = new Map<string, ModuleFactory>()
|
|
53
|
+
const runtimeModules: t.Expression[] = []
|
|
53
54
|
|
|
54
55
|
scripts.forEach(asset => {
|
|
55
56
|
|
|
@@ -63,11 +64,12 @@ export const parseHotUpdateAssets = (opt: ParseHotUpdateAssetsOptions) => {
|
|
|
63
64
|
|
|
64
65
|
if (!t.isStringLiteral(callee.property) || !callee.property.value.startsWith('webpackHotUpdate')) return
|
|
65
66
|
|
|
66
|
-
const [
|
|
67
|
+
const [, modules, runtime] = nodePath.node.arguments
|
|
67
68
|
|
|
68
69
|
if (!t.isObjectExpression(modules)) return
|
|
69
70
|
|
|
70
71
|
parseModuleFactories(modules).forEach(module => moduleFactories.set(module.moduleId, module))
|
|
72
|
+
if (t.isExpression(runtime)) runtimeModules.push(runtime)
|
|
71
73
|
},
|
|
72
74
|
})
|
|
73
75
|
})
|
|
@@ -83,7 +85,7 @@ export const parseHotUpdateAssets = (opt: ParseHotUpdateAssetsOptions) => {
|
|
|
83
85
|
tempRemoveModules.forEach(removedModule => removedModules.add(String(removedModule)))
|
|
84
86
|
}, [])
|
|
85
87
|
|
|
86
|
-
return {moduleFactories, removedModules}
|
|
88
|
+
return {moduleFactories, runtimeModules, removedModules}
|
|
87
89
|
}
|
|
88
90
|
|
|
89
91
|
/**
|
|
@@ -127,6 +129,7 @@ export const mergeUpdatePatches = (basePatch: UpdatePatchSource, nextPatch: Upda
|
|
|
127
129
|
fromHash: basePatch.fromHash,
|
|
128
130
|
toHash: nextPatch.toHash,
|
|
129
131
|
moduleFactories: [...moduleFactories.values()],
|
|
132
|
+
runtimeModules: [...basePatch.runtimeModules, ...nextPatch.runtimeModules],
|
|
130
133
|
removedModules: [...removedModules],
|
|
131
134
|
}
|
|
132
135
|
}
|
|
@@ -147,6 +150,7 @@ export const generatePatchAssetSource = (opt: generatePatchAssetSourceOpts): str
|
|
|
147
150
|
fromHash: "FROM_HASH",
|
|
148
151
|
toHash: "TO_HASH",
|
|
149
152
|
modules: MODULES,
|
|
153
|
+
runtimeModules: RUNTIME_MODULES,
|
|
150
154
|
removedModules: REMOVED_MODULES
|
|
151
155
|
})`)
|
|
152
156
|
const buildPatchAsset = template.program('module.exports = PATCHES;')
|
|
@@ -165,6 +169,7 @@ export const generatePatchAssetSource = (opt: generatePatchAssetSourceOpts): str
|
|
|
165
169
|
FROM_HASH: patch.fromHash,
|
|
166
170
|
TO_HASH: patch.toHash,
|
|
167
171
|
MODULES: t.objectExpression(updateModules),
|
|
172
|
+
RUNTIME_MODULES: t.arrayExpression(patch.runtimeModules),
|
|
168
173
|
REMOVED_MODULES: t.arrayExpression(patch.removedModules.map(moduleId => t.stringLiteral(moduleId))),
|
|
169
174
|
})
|
|
170
175
|
}),
|