@taro-hmr-compile/plugin-webpack 0.0.1-alpha.8 → 0.0.1
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/README.md +101 -0
- package/dist/compile/hmr-compiler-loader.js +44 -7
- package/dist/compile/hmr-compiler-loader.js.map +1 -1
- package/dist/compile/hmr-compiler-plugin.d.ts +7 -7
- package/dist/compile/hmr-compiler-plugin.js +2 -29
- package/dist/compile/hmr-compiler-plugin.js.map +1 -1
- package/dist/compile/hmr-output-plugin.d.ts +28 -0
- package/dist/compile/hmr-output-plugin.js +145 -0
- package/dist/compile/hmr-output-plugin.js.map +1 -0
- package/dist/compile/hmr-style-plugin.d.ts +25 -0
- package/dist/compile/hmr-style-plugin.js +53 -0
- package/dist/compile/hmr-style-plugin.js.map +1 -0
- package/dist/compile/lazy-compiler-loader.d.ts +2 -0
- package/dist/compile/lazy-compiler-loader.js +17 -5
- package/dist/compile/lazy-compiler-loader.js.map +1 -1
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +2 -1
- package/dist/constants.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +18 -6
- package/dist/index.js.map +1 -1
- package/dist/patch/hmr-patch-plugin.d.ts +6 -0
- package/dist/patch/hmr-patch-plugin.js +53 -4
- package/dist/patch/hmr-patch-plugin.js.map +1 -1
- package/dist/patch/hmr-patch-processor.d.ts +2 -1
- package/dist/patch/hmr-patch-processor.js +39 -22
- 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 +11 -5
- package/dist/patch/utils.js.map +1 -1
- package/package.json +4 -2
- package/src/compile/hmr-compiler-loader.ts +43 -7
- package/src/compile/hmr-compiler-plugin.ts +9 -34
- package/src/compile/hmr-output-plugin.ts +158 -0
- package/src/compile/hmr-style-plugin.ts +70 -0
- package/src/compile/lazy-compiler-loader.ts +20 -5
- package/src/constants.ts +2 -0
- package/src/index.ts +23 -9
- package/src/patch/hmr-patch-plugin.ts +53 -5
- package/src/patch/hmr-patch-processor.ts +48 -28
- package/src/patch/hmr-patch-runtime-plugin.ts +1 -1
- package/src/patch/types.ts +1 -0
- package/src/patch/utils.ts +10 -5
- package/src/types/taro-service.d.ts +15 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hmr-style-plugin.js","sourceRoot":"","sources":["../../src/compile/hmr-style-plugin.ts"],"names":[],"mappings":";;;AACA,qDAAyC;AAezC,MAAM,WAAW,GAAG,gBAAgB,CAAA;AAEpC;;;GAGG;AACH,MAAa,cAAc;IAKvB,YAAY,OAA8B;QAFlC,qBAAgB,GAAG,KAAK,CAAA;QAG5B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IAC1B,CAAC;IAED,KAAK,CAAC,QAAkB;QACpB,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE;YACtD,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,2BAA2B,CAAA;YACtE,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAA;QAC1G,CAAC,CAAC,CAAA;QAEF,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE;YACpD,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,CAAC,IAAI;gBAAE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;QACzF,CAAC,CAAC,CAAA;QAEF,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,EAAE;YAC5C,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAA;QACjC,CAAC,CAAC,CAAA;IACN,CAAC;IAEO,aAAa,CAAC,WAAwB;;QAC1C,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,OAAM;QAE9D,MAAM,EAAC,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,GAAG,IAAI,EAAE,SAAS,EAAC,GAAG,IAAI,CAAC,OAAO,CAAA;QAC3F,MAAM,MAAM,GAAG,MAAA,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,0CAAE,MAAM,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAA;QAE5E,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;YACvE,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,2BAAS,CAAC,WAAW,CAAC,EAAE;gBAClE,oBAAoB,EAAE,IAAI,CAAC,gBAAgB;aAC9C,CAAC,CAAA;QACN,CAAC;QAED,IAAI,aAAa,EAAE,CAAC;YAChB,MAAM,KAAK,GAAG,IAAI,2BAAS,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,KAAK,UAAU,EAAE,CAAC,KAAK,CAAC,CAAA;YAC9E,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,CAAC,CAAA;QACpD,CAAC;IACL,CAAC;IAEO,WAAW,CAAC,WAAwB,EAAE,IAAY,EAAE,MAAiB,EAAE,IAAI,GAAG,EAAE;QACpF,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;;YACtE,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IAClD,CAAC;CACJ;AA/CD,wCA+CC"}
|
|
@@ -4,6 +4,7 @@ interface CreateShellOpt {
|
|
|
4
4
|
page: string;
|
|
5
5
|
framework: 'react';
|
|
6
6
|
compileUrl: string;
|
|
7
|
+
memo: boolean;
|
|
7
8
|
}
|
|
8
9
|
export declare const createReactShell: (opt: CreateShellOpt) => string;
|
|
9
10
|
interface LoaderOptions {
|
|
@@ -12,6 +13,7 @@ interface LoaderOptions {
|
|
|
12
13
|
appConfig: AppConfig;
|
|
13
14
|
framework: 'react';
|
|
14
15
|
compileUrl: string;
|
|
16
|
+
lazyCompileExclude?: string[];
|
|
15
17
|
}
|
|
16
18
|
declare const lazyCompilerLoader: LoaderDefinitionFunction<LoaderOptions>;
|
|
17
19
|
export default lazyCompilerLoader;
|
|
@@ -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,14 +22,25 @@ 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
|
-
const { appPath, framework, appConfig, sourcePath, compileUrl } = this.getOptions();
|
|
29
|
+
const { appPath, framework, appConfig, sourcePath, compileUrl, lazyCompileExclude = [] } = this.getOptions();
|
|
26
30
|
const { dir: resourceDir, name: resourceName } = path_1.default.parse(path_1.default.relative(sourcePath, this.resourcePath));
|
|
27
|
-
const resourcePath = path_1.default.join(resourceDir, resourceName);
|
|
31
|
+
const resourcePath = path_1.default.join(resourceDir, resourceName).replace(/\\/g, '/');
|
|
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
|
-
|
|
35
|
+
const isExcluded = lazyCompileExclude.some(excludePath => {
|
|
36
|
+
if (!excludePath)
|
|
37
|
+
return false;
|
|
38
|
+
const normalizedPath = path_1.default.posix.normalize(excludePath.replace(/\\/g, '/')).replace(/^\/+/, '');
|
|
39
|
+
return normalizedPath.endsWith('/') ? resourcePath.startsWith(normalizedPath) : resourcePath === normalizedPath;
|
|
40
|
+
});
|
|
41
|
+
if (isExcluded)
|
|
42
|
+
return source;
|
|
43
|
+
return createShell({ page: resourcePath, framework, compileUrl, memo: isMemoPage(source) });
|
|
32
44
|
};
|
|
33
45
|
exports.default = lazyCompilerLoader;
|
|
34
46
|
//# 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;AAYD,MAAM,kBAAkB,GAA4C,UAAU,MAAM;IAChF,MAAM,EAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,kBAAkB,GAAG,EAAE,EAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;IAE1G,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,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAE7E,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,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;QACrD,IAAI,CAAC,WAAW;YAAE,OAAO,KAAK,CAAA;QAC9B,MAAM,cAAc,GAAG,cAAI,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QAChG,OAAO,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,KAAK,cAAc,CAAA;IACnH,CAAC,CAAC,CAAA;IAEF,IAAI,UAAU;QAAE,OAAO,MAAM,CAAA;IAE7B,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/constants.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export declare const HMR_OUTPUT_PATH = "hmr";
|
|
2
2
|
export declare const HMR_PATCH_ASSET = "hmr/patch.js";
|
|
3
|
+
export declare const HMR_PATCH_STYLE_ASSET = "hmr/patch.wxss";
|
|
3
4
|
export declare const DEFAULT_HMR_PATCH_HISTORY_LIMIT = 20;
|
|
4
5
|
export declare const DEFAULT_DEBUG_NAMESPACES = "taro-hmr-compile:*";
|
package/dist/constants.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DEFAULT_DEBUG_NAMESPACES = exports.DEFAULT_HMR_PATCH_HISTORY_LIMIT = exports.HMR_PATCH_ASSET = exports.HMR_OUTPUT_PATH = void 0;
|
|
3
|
+
exports.DEFAULT_DEBUG_NAMESPACES = exports.DEFAULT_HMR_PATCH_HISTORY_LIMIT = exports.HMR_PATCH_STYLE_ASSET = exports.HMR_PATCH_ASSET = exports.HMR_OUTPUT_PATH = void 0;
|
|
4
4
|
exports.HMR_OUTPUT_PATH = 'hmr';
|
|
5
5
|
exports.HMR_PATCH_ASSET = `${exports.HMR_OUTPUT_PATH}/patch.js`;
|
|
6
|
+
exports.HMR_PATCH_STYLE_ASSET = `${exports.HMR_OUTPUT_PATH}/patch.wxss`;
|
|
6
7
|
exports.DEFAULT_HMR_PATCH_HISTORY_LIMIT = 20;
|
|
7
8
|
exports.DEFAULT_DEBUG_NAMESPACES = 'taro-hmr-compile:*';
|
|
8
9
|
//# sourceMappingURL=constants.js.map
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,eAAe,GAAG,KAAK,CAAA;AAEvB,QAAA,eAAe,GAAG,GAAG,uBAAe,WAAW,CAAA;AAE/C,QAAA,+BAA+B,GAAG,EAAE,CAAA;AAEpC,QAAA,wBAAwB,GAAG,oBAAoB,CAAA"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,eAAe,GAAG,KAAK,CAAA;AAEvB,QAAA,eAAe,GAAG,GAAG,uBAAe,WAAW,CAAA;AAE/C,QAAA,qBAAqB,GAAG,GAAG,uBAAe,aAAa,CAAA;AAEvD,QAAA,+BAA+B,GAAG,EAAE,CAAA;AAEpC,QAAA,wBAAwB,GAAG,oBAAoB,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ export interface WebpackHmrCompileOpt {
|
|
|
4
4
|
port: number;
|
|
5
5
|
patchHistoryLimit: number;
|
|
6
6
|
debug: boolean | string;
|
|
7
|
+
/** 相对于 sourceRoot 的页面路径(不含扩展名),支持开头 /,末尾 / 表示目录。 */
|
|
8
|
+
lazyCompileExclude: string[];
|
|
7
9
|
}
|
|
8
10
|
declare const _default: (ctx: IPluginContext, pluginOpts: Partial<WebpackHmrCompileOpt>) => void;
|
|
9
11
|
export default _default;
|
package/dist/index.js
CHANGED
|
@@ -15,12 +15,14 @@ const hmr_compiler_plugin_1 = require("./compile/hmr-compiler-plugin");
|
|
|
15
15
|
const hmr_patch_plugin_1 = require("./patch/hmr-patch-plugin");
|
|
16
16
|
const hmr_server_plugin_1 = require("./server/hmr-server-plugin");
|
|
17
17
|
const compiler_1 = require("@taro-hmr-compile/core/compiler");
|
|
18
|
+
const hmr_output_plugin_1 = require("./compile/hmr-output-plugin");
|
|
18
19
|
const log_1 = require("./log");
|
|
20
|
+
const CUSTOM_WRAPPER = 'custom-wrapper';
|
|
19
21
|
exports.default = (ctx, pluginOpts) => {
|
|
20
22
|
var _a, _b, _c;
|
|
21
23
|
if (!((_a = ctx.runOpts.options) === null || _a === void 0 ? void 0 : _a.isWatch))
|
|
22
24
|
return;
|
|
23
|
-
const { appPath, sourcePath
|
|
25
|
+
const { appPath, sourcePath } = ctx.paths;
|
|
24
26
|
const { framework } = ctx.initialConfig;
|
|
25
27
|
const appConfig = (0, utils_1.getAppConfig)(ctx);
|
|
26
28
|
const host = (_b = pluginOpts.host) !== null && _b !== void 0 ? _b : '127.0.0.1';
|
|
@@ -32,18 +34,22 @@ exports.default = (ctx, pluginOpts) => {
|
|
|
32
34
|
})();
|
|
33
35
|
if (debugNamespaces)
|
|
34
36
|
(0, log_1.enableLog)(debugNamespaces);
|
|
35
|
-
ctx.
|
|
37
|
+
ctx.modifyComponentConfig(({ componentConfig }) => {
|
|
38
|
+
if (componentConfig.thirdPartyComponents.has(CUSTOM_WRAPPER))
|
|
39
|
+
return;
|
|
40
|
+
componentConfig.thirdPartyComponents.set(CUSTOM_WRAPPER, new Set());
|
|
41
|
+
});
|
|
36
42
|
ctx.modifyRunnerOpts(({ opts }) => {
|
|
37
43
|
var _a;
|
|
38
44
|
(_a = opts.output) !== null && _a !== void 0 ? _a : (opts.output = {});
|
|
39
45
|
opts.output.clean = false;
|
|
40
46
|
});
|
|
41
47
|
ctx.modifyWebpackChain((_a) => __awaiter(void 0, [_a], void 0, function* ({ chain, webpack }) {
|
|
42
|
-
var _b;
|
|
43
48
|
const port = yield (0, compiler_1.findAvailablePort)(preferredPort, host);
|
|
44
49
|
const compileUrl = `http://${host}:${port}/compile`;
|
|
45
50
|
if (port !== preferredPort)
|
|
46
51
|
console.warn(`[taro-hmr-compile] 端口 ${preferredPort} 已被占用,自动使用端口 ${port}`);
|
|
52
|
+
chain.optimization.usedExports(false);
|
|
47
53
|
chain.module
|
|
48
54
|
.rule('lazy-compiler')
|
|
49
55
|
.test(/\.[jt]sx?$/)
|
|
@@ -51,15 +57,21 @@ exports.default = (ctx, pluginOpts) => {
|
|
|
51
57
|
.end()
|
|
52
58
|
.use('lazy-compiler-loader')
|
|
53
59
|
.loader(require.resolve('./compile/lazy-compiler-loader'))
|
|
54
|
-
.options({ appPath, sourcePath, appConfig, framework, compileUrl })
|
|
60
|
+
.options({ appPath, sourcePath, appConfig, framework, compileUrl, lazyCompileExclude: pluginOpts.lazyCompileExclude })
|
|
55
61
|
.end();
|
|
56
62
|
chain.output
|
|
57
63
|
.set('hotUpdateChunkFilename', `${constants_1.HMR_OUTPUT_PATH}/[id].[fullhash].hot-update.js`)
|
|
58
64
|
.set('hotUpdateMainFilename', `${constants_1.HMR_OUTPUT_PATH}/[runtime].[fullhash].hot-update.json`);
|
|
59
65
|
const { patchHistoryLimit } = pluginOpts;
|
|
60
|
-
|
|
61
|
-
|
|
66
|
+
chain.plugin('hmr-compiler-plugin').use(hmr_compiler_plugin_1.HmrCompilerPlugin, [{
|
|
67
|
+
paths: ctx.paths,
|
|
68
|
+
appConfig,
|
|
69
|
+
debugNamespaces
|
|
70
|
+
}]);
|
|
62
71
|
chain.plugin('hmr-plugin').use(webpack.HotModuleReplacementPlugin);
|
|
72
|
+
chain.plugin('hmr-output-plugin').use(hmr_output_plugin_1.HmrOutputPlugin, [{
|
|
73
|
+
deferredAssets: [constants_1.HMR_PATCH_STYLE_ASSET, constants_1.HMR_PATCH_ASSET, 'app.wxss'],
|
|
74
|
+
}]);
|
|
63
75
|
chain.plugin('hmr-patch-plugin').use(hmr_patch_plugin_1.HmrPatchPlugin, [{ patchHistoryLimit }]);
|
|
64
76
|
chain.plugin('hmr-server-plugin').use(hmr_server_plugin_1.HmrServerPlugin, [{ host, port }]);
|
|
65
77
|
}));
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;AAEA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,13 +5,19 @@ export declare class HmrPatchPlugin {
|
|
|
5
5
|
private previousHash;
|
|
6
6
|
private initialBuildDone;
|
|
7
7
|
private readonly patchProcessor;
|
|
8
|
+
private readonly preservedAssets;
|
|
8
9
|
private readonly emittedAssetSources;
|
|
9
10
|
constructor(options: HmrPatchPluginOptions);
|
|
10
11
|
apply(compiler: Compiler): void;
|
|
11
12
|
private processAssets;
|
|
13
|
+
/** 将 Webpack 汇总后的 App 样式放入固定 patch 文件,App 入口只保留稳定引用。 */
|
|
14
|
+
private processStyleAssets;
|
|
15
|
+
private emitAsset;
|
|
12
16
|
/** 热更新转换完成后,保留固定 patch 与发生变化的模板、平台样式资产。 */
|
|
13
17
|
private removeSupersededAssets;
|
|
14
18
|
private emitPatchAsset;
|
|
15
19
|
private reset;
|
|
20
|
+
/** 补丁已从 hot-update assets 生成后,在 Webpack 写盘前从本次 compilation 移除它们。 */
|
|
21
|
+
private removeHotUpdateAssets;
|
|
16
22
|
}
|
|
17
23
|
export {};
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.HmrPatchPlugin = void 0;
|
|
4
7
|
const webpack_sources_1 = require("webpack-sources");
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
5
9
|
const constants_1 = require("../constants");
|
|
6
10
|
const hmr_compiler_plugin_1 = require("../compile/hmr-compiler-plugin");
|
|
7
11
|
const hmr_patch_runtime_plugin_1 = require("./hmr-patch-runtime-plugin");
|
|
@@ -11,6 +15,7 @@ const HOT_UPDATE_MANIFEST_SUFFIX = '.hot-update.json';
|
|
|
11
15
|
const HOT_UPDATE_SCRIPT_SUFFIX = '.hot-update.js';
|
|
12
16
|
const STYLE_ASSET_PATTERN = /\.(?:css|wxss|acss|ttss|qss|jxss)(?:\.map)?$/i;
|
|
13
17
|
const TEMPLATE_RUNTIME_ASSET_PATTERN = /(?:^|\/)(?:base\.wxml|utils\.wxs)$/i;
|
|
18
|
+
const STYLE_ENTRY_ASSET = 'app.wxss';
|
|
14
19
|
const isPassthroughAsset = (assetName) => {
|
|
15
20
|
return STYLE_ASSET_PATTERN.test(assetName) || TEMPLATE_RUNTIME_ASSET_PATTERN.test(assetName);
|
|
16
21
|
};
|
|
@@ -18,18 +23,25 @@ class HmrPatchPlugin {
|
|
|
18
23
|
constructor(options) {
|
|
19
24
|
this.previousHash = '';
|
|
20
25
|
this.initialBuildDone = false;
|
|
26
|
+
this.preservedAssets = new Set([constants_1.HMR_PATCH_ASSET, STYLE_ENTRY_ASSET, constants_1.HMR_PATCH_STYLE_ASSET]);
|
|
21
27
|
this.emittedAssetSources = new Map();
|
|
22
28
|
this.patchProcessor = new hmr_patch_processor_1.HmrPatchProcessor(options);
|
|
23
29
|
}
|
|
24
30
|
apply(compiler) {
|
|
25
31
|
new hmr_patch_runtime_plugin_1.HmrPatchRuntimePlugin().apply(compiler);
|
|
26
32
|
compiler.hooks.compilation.tap(PLUGIN_NAME, compilation => {
|
|
27
|
-
hmr_compiler_plugin_1.HmrCompilerPlugin.getCompilationHooks(compilation).chunkModulesRendered.tap(PLUGIN_NAME,
|
|
28
|
-
this.patchProcessor.processChunkModules({ compilation
|
|
33
|
+
hmr_compiler_plugin_1.HmrCompilerPlugin.getCompilationHooks(compilation).chunkModulesRendered.tap(PLUGIN_NAME, options => {
|
|
34
|
+
this.patchProcessor.processChunkModules(Object.assign({ compilation }, options));
|
|
29
35
|
});
|
|
30
36
|
// 等 Webpack 生成完整的 hot-update assets 后,再统一转换成固定的 patch.js。
|
|
31
37
|
const stage = compiler.webpack.Compilation.PROCESS_ASSETS_STAGE_REPORT;
|
|
32
|
-
compilation.hooks.processAssets.tap({ name: PLUGIN_NAME, stage }, () =>
|
|
38
|
+
compilation.hooks.processAssets.tap({ name: PLUGIN_NAME, stage }, () => {
|
|
39
|
+
if (compilation.errors.length > 0 || !compilation.hash)
|
|
40
|
+
return;
|
|
41
|
+
this.processStyleAssets(compilation);
|
|
42
|
+
this.processAssets(compilation);
|
|
43
|
+
});
|
|
44
|
+
this.removeHotUpdateAssets(compilation);
|
|
33
45
|
});
|
|
34
46
|
compiler.hooks.afterEmit.tap(PLUGIN_NAME, compilation => {
|
|
35
47
|
const isSuccessful = compilation.errors.length === 0 && Boolean(compilation.hash);
|
|
@@ -60,10 +72,39 @@ class HmrPatchPlugin {
|
|
|
60
72
|
this.removeSupersededAssets(compilation);
|
|
61
73
|
this.previousHash = toHash;
|
|
62
74
|
}
|
|
75
|
+
/** 将 Webpack 汇总后的 App 样式放入固定 patch 文件,App 入口只保留稳定引用。 */
|
|
76
|
+
processStyleAssets(compilation) {
|
|
77
|
+
const entryAsset = compilation.getAsset(STYLE_ENTRY_ASSET);
|
|
78
|
+
const source = entryAsset === null || entryAsset === void 0 ? void 0 : entryAsset.source.source().toString();
|
|
79
|
+
if (!source)
|
|
80
|
+
return;
|
|
81
|
+
const importPath = node_path_1.default.posix.relative(node_path_1.default.posix.dirname(STYLE_ENTRY_ASSET), constants_1.HMR_PATCH_STYLE_ASSET);
|
|
82
|
+
const patchImport = importPath.startsWith('.') ? importPath : `./${importPath}`;
|
|
83
|
+
const alreadyPatched = source.trim() === `@import "${patchImport}";` || source.trim() === `@import '${patchImport}';`;
|
|
84
|
+
if (!alreadyPatched) {
|
|
85
|
+
const patchDirectory = node_path_1.default.posix.dirname(constants_1.HMR_PATCH_STYLE_ASSET);
|
|
86
|
+
const sourceDirectory = node_path_1.default.posix.dirname(STYLE_ENTRY_ASSET);
|
|
87
|
+
const patchSource = source.replace(/(@import\s+)(["'])([^"']+)\2/g, (match, prefix, quote, request) => {
|
|
88
|
+
if (/^(?:[a-z]+:|\/|#)/i.test(request))
|
|
89
|
+
return match;
|
|
90
|
+
const resolved = node_path_1.default.posix.normalize(node_path_1.default.posix.join(sourceDirectory, request));
|
|
91
|
+
const relative = node_path_1.default.posix.relative(patchDirectory, resolved);
|
|
92
|
+
return `${prefix}${quote}${relative.startsWith('.') ? relative : `./${relative}`}${quote}`;
|
|
93
|
+
});
|
|
94
|
+
this.emitAsset(compilation, constants_1.HMR_PATCH_STYLE_ASSET, new webpack_sources_1.RawSource(patchSource));
|
|
95
|
+
}
|
|
96
|
+
this.emitAsset(compilation, STYLE_ENTRY_ASSET, new webpack_sources_1.RawSource(`@import ${JSON.stringify(patchImport)};\n`));
|
|
97
|
+
}
|
|
98
|
+
emitAsset(compilation, assetName, source) {
|
|
99
|
+
if (compilation.getAsset(assetName))
|
|
100
|
+
compilation.updateAsset(assetName, source);
|
|
101
|
+
else
|
|
102
|
+
compilation.emitAsset(assetName, source);
|
|
103
|
+
}
|
|
63
104
|
/** 热更新转换完成后,保留固定 patch 与发生变化的模板、平台样式资产。 */
|
|
64
105
|
removeSupersededAssets(compilation) {
|
|
65
106
|
compilation.getAssets().forEach(asset => {
|
|
66
|
-
if (asset.name
|
|
107
|
+
if (this.preservedAssets.has(asset.name))
|
|
67
108
|
return;
|
|
68
109
|
if (!isPassthroughAsset(asset.name))
|
|
69
110
|
return compilation.deleteAsset(asset.name);
|
|
@@ -88,6 +129,14 @@ class HmrPatchPlugin {
|
|
|
88
129
|
this.emittedAssetSources.clear();
|
|
89
130
|
this.patchProcessor.reset();
|
|
90
131
|
}
|
|
132
|
+
/** 补丁已从 hot-update assets 生成后,在 Webpack 写盘前从本次 compilation 移除它们。 */
|
|
133
|
+
removeHotUpdateAssets(compilation) {
|
|
134
|
+
compilation.getAssets().forEach(asset => {
|
|
135
|
+
if (asset.name.endsWith(HOT_UPDATE_MANIFEST_SUFFIX) || asset.name.endsWith(HOT_UPDATE_SCRIPT_SUFFIX)) {
|
|
136
|
+
compilation.deleteAsset(asset.name);
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
}
|
|
91
140
|
}
|
|
92
141
|
exports.HmrPatchPlugin = HmrPatchPlugin;
|
|
93
142
|
//# sourceMappingURL=hmr-patch-plugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hmr-patch-plugin.js","sourceRoot":"","sources":["../../src/patch/hmr-patch-plugin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hmr-patch-plugin.js","sourceRoot":"","sources":["../../src/patch/hmr-patch-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { type Compilation } from "webpack";
|
|
1
|
+
import { type Chunk, type Compilation } from "webpack";
|
|
2
2
|
import { ParseHotUpdateAssetsOptions } from "./utils";
|
|
3
3
|
interface ProcessChunkModulesOptions {
|
|
4
4
|
source: string;
|
|
5
5
|
compilation: Compilation;
|
|
6
6
|
isBootstrapChunk: boolean;
|
|
7
|
+
chunk: Chunk;
|
|
7
8
|
}
|
|
8
9
|
export interface HmrPatchProcessorOptions {
|
|
9
10
|
patchHistoryLimit?: number;
|
|
@@ -4,10 +4,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.HmrPatchProcessor = void 0;
|
|
7
|
-
const generator_1 = __importDefault(require("@babel/generator"));
|
|
8
7
|
const utils_1 = require("./utils");
|
|
9
|
-
const
|
|
8
|
+
const isNil_1 = __importDefault(require("lodash/isNil"));
|
|
10
9
|
const constants_1 = require("../constants");
|
|
10
|
+
const areModuleHashesEqual = (left, right) => {
|
|
11
|
+
if (!left || !right || left.size !== right.size)
|
|
12
|
+
return false;
|
|
13
|
+
return Array.from(left).every(hash => right.has(hash));
|
|
14
|
+
};
|
|
11
15
|
class HmrPatchProcessor {
|
|
12
16
|
constructor(opts) {
|
|
13
17
|
this.bootstrapFactories = new Map();
|
|
@@ -27,10 +31,9 @@ class HmrPatchProcessor {
|
|
|
27
31
|
toModuleHashes.forEach((_, moduleId) => moduleIds.add(moduleId));
|
|
28
32
|
const changedModuleIds = new Set();
|
|
29
33
|
moduleIds.forEach(moduleId => {
|
|
30
|
-
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
if (fromFactoryHash !== toFactoryHash)
|
|
34
|
+
const fromModuleHash = fromModuleHashes.get(moduleId);
|
|
35
|
+
const toModuleHash = toModuleHashes.get(moduleId);
|
|
36
|
+
if (!areModuleHashesEqual(fromModuleHash, toModuleHash))
|
|
34
37
|
changedModuleIds.add(moduleId);
|
|
35
38
|
});
|
|
36
39
|
return changedModuleIds;
|
|
@@ -50,7 +53,8 @@ class HmrPatchProcessor {
|
|
|
50
53
|
return Array.from(tempPatchInfo.removedModules.values());
|
|
51
54
|
return Array.from(tempPatchInfo.removedModules.values()).filter(item => changedModuleIds.has(item));
|
|
52
55
|
})();
|
|
53
|
-
|
|
56
|
+
const { runtimeModules } = tempPatchInfo;
|
|
57
|
+
this.recentUpdatePatches.push({ type: 'update', moduleFactories, runtimeModules, fromHash, toHash, removedModules });
|
|
54
58
|
const patchHistoryLimit = Math.max(1, (_a = this.opts.patchHistoryLimit) !== null && _a !== void 0 ? _a : constants_1.DEFAULT_HMR_PATCH_HISTORY_LIMIT);
|
|
55
59
|
if (this.recentUpdatePatches.length <= patchHistoryLimit)
|
|
56
60
|
return;
|
|
@@ -60,27 +64,40 @@ class HmrPatchProcessor {
|
|
|
60
64
|
this.moduleHashesByFullHash.delete(oldestUpdatePatch.toHash);
|
|
61
65
|
}
|
|
62
66
|
processChunkModules(opt) {
|
|
63
|
-
const {
|
|
64
|
-
const
|
|
67
|
+
const { chunk, compilation, isBootstrapChunk, source } = opt;
|
|
68
|
+
const { hash: fullHash } = compilation;
|
|
69
|
+
const modules = (0, utils_1.parseChunkAsset)(source);
|
|
65
70
|
modules.forEach(moduleFactory => {
|
|
66
71
|
var _a;
|
|
67
72
|
const { moduleId, factory } = moduleFactory;
|
|
68
|
-
if (
|
|
69
|
-
const compilationFactories = (_a = this.bootstrapFactoriesByCompilation.get(
|
|
73
|
+
if (isBootstrapChunk) {
|
|
74
|
+
const compilationFactories = (_a = this.bootstrapFactoriesByCompilation.get(compilation)) !== null && _a !== void 0 ? _a : new Map();
|
|
70
75
|
compilationFactories.set(moduleId, { moduleId, factory });
|
|
71
|
-
this.bootstrapFactoriesByCompilation.set(
|
|
76
|
+
this.bootstrapFactoriesByCompilation.set(compilation, compilationFactories);
|
|
72
77
|
}
|
|
73
|
-
|
|
78
|
+
});
|
|
79
|
+
if (!fullHash)
|
|
80
|
+
return;
|
|
81
|
+
const moduleHashes = (() => {
|
|
82
|
+
const hasCurFullHashModuleHashMap = this.moduleHashesByFullHash.has(fullHash);
|
|
83
|
+
if (!hasCurFullHashModuleHashMap)
|
|
84
|
+
this.moduleHashesByFullHash.set(fullHash, new Map());
|
|
85
|
+
return this.moduleHashesByFullHash.get(fullHash);
|
|
86
|
+
})();
|
|
87
|
+
const { chunkGraph, codeGenerationResults } = compilation;
|
|
88
|
+
Array.from(chunkGraph.getChunkModulesIterable(chunk)).forEach(module => {
|
|
89
|
+
var _a;
|
|
90
|
+
const moduleId = chunkGraph.getModuleId(module);
|
|
91
|
+
if ((0, isNil_1.default)(moduleId))
|
|
74
92
|
return;
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
moduleHashes.set(moduleId, { moduleId, factoryHash });
|
|
93
|
+
const normalizedModuleId = String(moduleId);
|
|
94
|
+
// 获取模块在当前 chunk.runtime 下的 Hash,优先从 codeGenerationResults 获取,如果没有对应的代码生成结果,则回退到 chunkGraph 获取
|
|
95
|
+
const moduleHash = (codeGenerationResults === null || codeGenerationResults === void 0 ? void 0 : codeGenerationResults.has(module, chunk.runtime))
|
|
96
|
+
? codeGenerationResults.getHash(module, chunk.runtime)
|
|
97
|
+
: chunkGraph.getModuleHash(module, chunk.runtime);
|
|
98
|
+
const hashes = (_a = moduleHashes.get(normalizedModuleId)) !== null && _a !== void 0 ? _a : new Set();
|
|
99
|
+
hashes.add(moduleHash);
|
|
100
|
+
moduleHashes.set(normalizedModuleId, hashes);
|
|
84
101
|
});
|
|
85
102
|
}
|
|
86
103
|
commitBootstrapFactories(compilation) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hmr-patch-processor.js","sourceRoot":"","sources":["../../src/patch/hmr-patch-processor.ts"],"names":[],"mappings":";;;;;;AACA,
|
|
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
|
@@ -49,7 +49,7 @@ const generator_1 = __importDefault(require("@babel/generator"));
|
|
|
49
49
|
const parseModuleFactories = (expression) => {
|
|
50
50
|
const moduleFactories = new Map();
|
|
51
51
|
if (!t.isObjectExpression(expression))
|
|
52
|
-
return moduleFactories.values();
|
|
52
|
+
return Array.from(moduleFactories.values());
|
|
53
53
|
expression.properties.forEach(property => {
|
|
54
54
|
if (!t.isObjectProperty(property) || !t.isExpression(property.value))
|
|
55
55
|
throw new Error('[taro-hmr-compile] HMR 模块对象包含无法识别的属性');
|
|
@@ -63,7 +63,7 @@ const parseModuleFactories = (expression) => {
|
|
|
63
63
|
})();
|
|
64
64
|
moduleFactories.set(moduleId, { factory, moduleId });
|
|
65
65
|
});
|
|
66
|
-
return moduleFactories.values();
|
|
66
|
+
return Array.from(moduleFactories.values());
|
|
67
67
|
};
|
|
68
68
|
/**
|
|
69
69
|
* 解析热更新产物
|
|
@@ -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
|
/**
|
|
@@ -129,7 +132,8 @@ const mergeUpdatePatches = (basePatch, nextPatch) => {
|
|
|
129
132
|
type: 'update',
|
|
130
133
|
fromHash: basePatch.fromHash,
|
|
131
134
|
toHash: nextPatch.toHash,
|
|
132
|
-
moduleFactories:
|
|
135
|
+
moduleFactories: Array.from(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;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/patch/utils.ts"],"names":[],"mappings":"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"}
|