@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.
Files changed (46) hide show
  1. package/README.md +101 -0
  2. package/dist/compile/hmr-compiler-loader.js +44 -7
  3. package/dist/compile/hmr-compiler-loader.js.map +1 -1
  4. package/dist/compile/hmr-compiler-plugin.d.ts +7 -7
  5. package/dist/compile/hmr-compiler-plugin.js +2 -29
  6. package/dist/compile/hmr-compiler-plugin.js.map +1 -1
  7. package/dist/compile/hmr-output-plugin.d.ts +28 -0
  8. package/dist/compile/hmr-output-plugin.js +145 -0
  9. package/dist/compile/hmr-output-plugin.js.map +1 -0
  10. package/dist/compile/hmr-style-plugin.d.ts +25 -0
  11. package/dist/compile/hmr-style-plugin.js +53 -0
  12. package/dist/compile/hmr-style-plugin.js.map +1 -0
  13. package/dist/compile/lazy-compiler-loader.d.ts +2 -0
  14. package/dist/compile/lazy-compiler-loader.js +17 -5
  15. package/dist/compile/lazy-compiler-loader.js.map +1 -1
  16. package/dist/constants.d.ts +1 -0
  17. package/dist/constants.js +2 -1
  18. package/dist/constants.js.map +1 -1
  19. package/dist/index.d.ts +2 -0
  20. package/dist/index.js +18 -6
  21. package/dist/index.js.map +1 -1
  22. package/dist/patch/hmr-patch-plugin.d.ts +6 -0
  23. package/dist/patch/hmr-patch-plugin.js +53 -4
  24. package/dist/patch/hmr-patch-plugin.js.map +1 -1
  25. package/dist/patch/hmr-patch-processor.d.ts +2 -1
  26. package/dist/patch/hmr-patch-processor.js +39 -22
  27. package/dist/patch/hmr-patch-processor.js.map +1 -1
  28. package/dist/patch/hmr-patch-runtime-plugin.js +1 -1
  29. package/dist/patch/types.d.ts +1 -0
  30. package/dist/patch/utils.d.ts +2 -0
  31. package/dist/patch/utils.js +11 -5
  32. package/dist/patch/utils.js.map +1 -1
  33. package/package.json +4 -2
  34. package/src/compile/hmr-compiler-loader.ts +43 -7
  35. package/src/compile/hmr-compiler-plugin.ts +9 -34
  36. package/src/compile/hmr-output-plugin.ts +158 -0
  37. package/src/compile/hmr-style-plugin.ts +70 -0
  38. package/src/compile/lazy-compiler-loader.ts +20 -5
  39. package/src/constants.ts +2 -0
  40. package/src/index.ts +23 -9
  41. package/src/patch/hmr-patch-plugin.ts +53 -5
  42. package/src/patch/hmr-patch-processor.ts +48 -28
  43. package/src/patch/hmr-patch-runtime-plugin.ts +1 -1
  44. package/src/patch/types.ts +1 -0
  45. package/src/patch/utils.ts +10 -5
  46. 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
- return createShell({ page: resourcePath, framework, compileUrl });
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;AAUvC,MAAM,gBAAgB,GAAG,CAAC,GAAmB,EAAE,EAAE;IACpD,MAAM,EAAC,IAAI,EAAE,UAAU,EAAC,GAAG,GAAG,CAAA;IAC9B,OAAO;gCACqB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;0CACvD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;;KAEpG,CAAA;AACL,CAAC,CAAA;AAPY,QAAA,gBAAgB,oBAO5B;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;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,EAAC,CAAC,CAAA;AACnE,CAAC,CAAA;AAED,kBAAe,kBAAkB,CAAA"}
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"}
@@ -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
@@ -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, outputPath } = ctx.paths;
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.onBuildStart(() => (0, compiler_1.emptyDirFile)(outputPath));
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
- const [{ filename: styleFilename }] = ((_b = chain.plugin('miniCssExtractPlugin')) === null || _b === void 0 ? void 0 : _b.get('args')) || [];
61
- chain.plugin('hmr-compiler-plugin').use(hmr_compiler_plugin_1.HmrCompilerPlugin, [{ paths: ctx.paths, appConfig, styleFilename, debugNamespaces }]);
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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;AAEA,2CAA6G;AAC7G,mCAAoC;AACpC,uEAA+D;AAC/D,+DAAuD;AACvD,kEAA0D;AAC1D,8DAAiE;AACjE,mEAA2D;AAC3D,+BAA+B;AAE/B,MAAM,cAAc,GAAG,gBAAgB,CAAA;AAWvC,kBAAe,CAAC,GAAmB,EAAE,UAAyC,EAAE,EAAE;;IAC9E,IAAI,CAAC,CAAA,MAAA,GAAG,CAAC,OAAO,CAAC,OAAO,0CAAE,OAAO,CAAA;QAAE,OAAM;IAEzC,MAAM,EAAC,OAAO,EAAE,UAAU,EAAC,GAAG,GAAG,CAAC,KAAK,CAAA;IAEvC,MAAM,EAAC,SAAS,EAAC,GAAG,GAAG,CAAC,aAAa,CAAA;IAErC,MAAM,SAAS,GAAc,IAAA,oBAAY,EAAC,GAAG,CAAC,CAAA;IAE9C,MAAM,IAAI,GAAG,MAAA,UAAU,CAAC,IAAI,mCAAI,WAAW,CAAA;IAE3C,MAAM,aAAa,GAAG,MAAA,UAAU,CAAC,IAAI,mCAAI,IAAI,CAAA;IAE7C,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE;QAC1B,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,QAAQ;YAAE,OAAO,UAAU,CAAC,KAAK,CAAA;QACjE,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,oCAAwB,CAAC,CAAC,CAAC,SAAS,CAAA;IAClE,CAAC,CAAC,EAAE,CAAA;IAEJ,IAAI,eAAe;QAAE,IAAA,eAAS,EAAC,eAAe,CAAC,CAAA;IAE/C,GAAG,CAAC,qBAAqB,CAAC,CAAC,EAAC,eAAe,EAAC,EAAE,EAAE;QAC5C,IAAI,eAAe,CAAC,oBAAoB,CAAC,GAAG,CAAC,cAAc,CAAC;YAAE,OAAM;QACpE,eAAe,CAAC,oBAAoB,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;IACvE,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAE;;QAC5B,MAAA,IAAI,CAAC,MAAM,oCAAX,IAAI,CAAC,MAAM,GAAK,EAAE,EAAA;QAClB,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;IAC7B,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,kBAAkB,CAAC,KAAyB,EAAE,4CAApB,EAAC,KAAK,EAAE,OAAO,EAAC;QAC1C,MAAM,IAAI,GAAG,MAAM,IAAA,4BAAiB,EAAC,aAAa,EAAE,IAAI,CAAC,CAAA;QAEzD,MAAM,UAAU,GAAG,UAAU,IAAI,IAAI,IAAI,UAAU,CAAA;QAEnD,IAAI,IAAI,KAAK,aAAa;YAAE,OAAO,CAAC,IAAI,CAAC,yBAAyB,aAAa,gBAAgB,IAAI,EAAE,CAAC,CAAA;QAEtG,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QAErC,KAAK,CAAC,MAAM;aACP,IAAI,CAAC,eAAe,CAAC;aACrB,IAAI,CAAC,YAAY,CAAC;aAClB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC;aACjC,GAAG,EAAE;aACL,GAAG,CAAC,sBAAsB,CAAC;aAC3B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;aACzD,OAAO,CAAC,EAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,CAAC,kBAAkB,EAAC,CAAC;aACnH,GAAG,EAAE,CAAA;QAEV,KAAK,CAAC,MAAM;aACP,GAAG,CAAC,wBAAwB,EAAE,GAAG,2BAAe,gCAAgC,CAAC;aACjF,GAAG,CAAC,uBAAuB,EAAE,GAAG,2BAAe,uCAAuC,CAAC,CAAA;QAE5F,MAAM,EAAC,iBAAiB,EAAC,GAAG,UAAU,CAAA;QAEtC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,uCAAiB,EAAE,CAAC;gBACxD,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,SAAS;gBACT,eAAe;aAClB,CAAC,CAAC,CAAA;QACH,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAA;QAElE,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,mCAAe,EAAE,CAAC;gBACpD,cAAc,EAAE,CAAC,iCAAqB,EAAE,2BAAe,EAAE,UAAU,CAAC;aACvE,CAAC,CAAC,CAAA;QAEH,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,iCAAc,EAAE,CAAC,EAAC,iBAAiB,EAAC,CAAC,CAAC,CAAA;QAE3E,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,mCAAe,EAAE,CAAC,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC,CAAA;IAC1E,CAAC,CAAA,CAAC,CAAA;AACN,CAAC,CAAA"}
@@ -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, (source, isBootstrapChunk) => {
28
- this.patchProcessor.processChunkModules({ compilation, source, isBootstrapChunk });
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 }, () => this.processAssets(compilation));
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 === constants_1.HMR_PATCH_ASSET)
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":";;;AACA,qDAAyC;AACzC,4CAA4C;AAC5C,wEAAgE;AAChE,yEAAgE;AAChE,+DAAkF;AAElF,MAAM,WAAW,GAAG,gBAAgB,CAAA;AACpC,MAAM,0BAA0B,GAAG,kBAAkB,CAAA;AACrD,MAAM,wBAAwB,GAAG,gBAAgB,CAAA;AACjD,MAAM,mBAAmB,GAAG,+CAA+C,CAAA;AAC3E,MAAM,8BAA8B,GAAG,qCAAqC,CAAA;AAI5E,MAAM,kBAAkB,GAAG,CAAC,SAAiB,EAAE,EAAE;IAC7C,OAAO,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,8BAA8B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAChG,CAAC,CAAA;AAED,MAAa,cAAc;IAUvB,YAAY,OAA8B;QARlC,iBAAY,GAAW,EAAE,CAAA;QAEzB,qBAAgB,GAAG,KAAK,CAAA;QAIf,wBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAA;QAG5D,IAAI,CAAC,cAAc,GAAG,IAAI,uCAAiB,CAAC,OAAO,CAAC,CAAA;IACxD,CAAC;IAED,KAAK,CAAC,QAAkB;QACpB,IAAI,gDAAqB,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAE3C,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE;YACtD,uCAAiB,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE;gBAClH,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAC,CAAC,CAAA;YACpF,CAAC,CAAC,CAAA;YAEF,0DAA0D;YAC1D,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,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;YACjF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,YAAY,CAAA;QACjE,CAAC,CAAC,CAAA;QAEF,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;IAClE,CAAC;IAEO,aAAa,CAAC,WAAwB;QAC1C,MAAM,EAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAC,GAAG,IAAI,CAAA;QAEvD,MAAM,EAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAC,GAAG,WAAW,CAAA;QAE7D,IAAI,CAAC,MAAM,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC;YAAE,OAAM;QACnD,eAAe;QACf,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACpB,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAA;YACzD,WAAW,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACpC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC;oBAAE,OAAM;gBAC3C,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;YAC9E,CAAC,CAAC,CAAA;YACF,IAAI,CAAC,YAAY,GAAG,MAAM,CAAA;YAC1B,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;QAClD,CAAC;QAED,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC,CAAA;QAE1G,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC,CAAA;QAEtG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,EAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAC,CAAC,CAAA;QAEzE,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;QAEtC,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAA;QAExC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAA;IAC9B,CAAC;IAED,2CAA2C;IACnC,sBAAsB,CAAC,WAAwB;QACnD,WAAW,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACpC,IAAI,KAAK,CAAC,IAAI,KAAK,2BAAe;gBAAE,OAAM;YAC1C,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,OAAO,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YAE/E,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAA;YAC/C,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YAC/D,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;YAChD,IAAI,cAAc,KAAK,MAAM;gBAAE,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACtE,CAAC,CAAC,CAAA;IACN,CAAC;IAEO,cAAc,CAAC,WAAwB,EAAE,WAAoB;QACjE,MAAM,MAAM,GAAG,IAAI,2BAAS,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC5D,MAAM,SAAS,GAAG,EAAC,oBAAoB,EAAE,WAAW,EAAC,CAAA;QACrD,IAAI,WAAW,CAAC,QAAQ,CAAC,2BAAe,CAAC;YAAE,WAAW,CAAC,WAAW,CAAC,2BAAe,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;;YACjG,WAAW,CAAC,SAAS,CAAC,2BAAe,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;IAClE,CAAC;IAEO,KAAK;QACT,IAAI,CAAC,YAAY,GAAG,EAAE,CAAA;QACtB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAA;QAC7B,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAA;QAChC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;IAC/B,CAAC;CACJ;AA3FD,wCA2FC"}
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 crypto_1 = require("crypto");
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
- var _a, _b;
31
- const fromFactoryHash = (_a = fromModuleHashes.get(moduleId)) === null || _a === void 0 ? void 0 : _a.factoryHash;
32
- const toFactoryHash = (_b = toModuleHashes.get(moduleId)) === null || _b === void 0 ? void 0 : _b.factoryHash;
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
- this.recentUpdatePatches.push({ type: 'update', moduleFactories, fromHash, toHash, removedModules });
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 { hash: fullHash } = opt.compilation;
64
- const modules = (0, utils_1.parseChunkAsset)(opt.source);
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 (opt.isBootstrapChunk) {
69
- const compilationFactories = (_a = this.bootstrapFactoriesByCompilation.get(opt.compilation)) !== null && _a !== void 0 ? _a : new Map();
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(opt.compilation, compilationFactories);
76
+ this.bootstrapFactoriesByCompilation.set(compilation, compilationFactories);
72
77
  }
73
- if (!fullHash)
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 moduleHashes = (() => {
76
- const hasCurFullHashModuleHashMap = this.moduleHashesByFullHash.has(fullHash);
77
- if (!hasCurFullHashModuleHashMap)
78
- this.moduleHashesByFullHash.set(fullHash, new Map());
79
- return this.moduleHashesByFullHash.get(fullHash);
80
- })();
81
- const { code: source } = (0, generator_1.default)(factory, { compact: true, comments: false, minified: true, });
82
- const factoryHash = (0, crypto_1.createHash)('sha256').update(source).digest('hex');
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":"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"}
1
+ {"version":3,"file":"hmr-patch-processor.js","sourceRoot":"","sources":["../../src/patch/hmr-patch-processor.ts"],"names":[],"mappings":";;;;;;AACA,mCAIiB;AACjB,yDAAgC;AAEhC,4CAA6D;AAwB7D,MAAM,oBAAoB,GAAG,CAAC,IAA6B,EAAE,KAA8B,EAAW,EAAE;IACpG,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;QAAE,OAAO,KAAK,CAAA;IAC7D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;AAC1D,CAAC,CAAA;AAED,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,cAAc,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YACrD,MAAM,YAAY,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YACjD,IAAI,CAAC,oBAAoB,CAAC,cAAc,EAAE,YAAY,CAAC;gBAAE,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC3F,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,MAAM,EAAC,cAAc,EAAC,GAAG,aAAa,CAAA;QAEtC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAC,CAAC,CAAA;QAElH,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,mCAAI,2CAA+B,CAAC,CAAA;QAErG,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,IAAI,iBAAiB;YAAE,OAAM;QAEhE,MAAM,CAAC,iBAAiB,EAAE,uBAAuB,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAA;QAEtF,MAAM,iBAAiB,GAAG,IAAA,0BAAkB,EAAC,iBAAiB,EAAE,uBAAuB,CAAC,CAAA;QAExF,IAAI,CAAC,mBAAmB,GAAG,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,CAAA;QAEvD,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAChE,CAAC;IAED,mBAAmB,CAAC,GAA+B;QAC/C,MAAM,EAAC,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,EAAC,GAAG,GAAG,CAAA;QAC1D,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAC,GAAG,WAAW,CAAA;QACpC,MAAM,OAAO,GAAG,IAAA,uBAAe,EAAC,MAAM,CAAC,CAAA;QACvC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;;YAC5B,MAAM,EAAC,QAAQ,EAAE,OAAO,EAAC,GAAG,aAAa,CAAA;YAEzC,IAAI,gBAAgB,EAAE,CAAC;gBACnB,MAAM,oBAAoB,GAAG,MAAA,IAAI,CAAC,+BAA+B,CAAC,GAAG,CAAC,WAAW,CAAC,mCAAI,IAAI,GAAG,EAAE,CAAA;gBAC/F,oBAAoB,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAC,QAAQ,EAAE,OAAO,EAAC,CAAC,CAAA;gBACvD,IAAI,CAAC,+BAA+B,CAAC,GAAG,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAA;YAC/E,CAAC;QACL,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ;YAAE,OAAM;QAErB,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE;YACvB,MAAM,2BAA2B,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YAC7E,IAAI,CAAC,2BAA2B;gBAAE,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;YACtF,OAAO,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAA;QACrD,CAAC,CAAC,EAAE,CAAA;QAEJ,MAAM,EAAE,UAAU,EAAE,qBAAqB,EAAE,GAAG,WAAW,CAAA;QAEzD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;;YACnE,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;YAE/C,IAAI,IAAA,eAAK,EAAC,QAAQ,CAAC;gBAAE,OAAM;YAE3B,MAAM,kBAAkB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;YAE3C,8FAA8F;YAC9F,MAAM,UAAU,GAAG,CAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;gBAChE,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;gBACtD,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;YAErD,MAAM,MAAM,GAAG,MAAA,YAAY,CAAC,GAAG,CAAC,kBAAkB,CAAC,mCAAI,IAAI,GAAG,EAAU,CAAA;YACxE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;YACtB,YAAY,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAA;QAChD,CAAC,CAAC,CAAA;IACN,CAAC;IAED,wBAAwB,CAAC,WAAwB;;QAC7C,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAA;QAC/B,MAAA,IAAI,CAAC,+BAA+B,CAAC,GAAG,CAAC,WAAW,CAAC,0CAAE,OAAO,CAAC,aAAa,CAAC,EAAE;YAC3E,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;QACtE,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,+BAA+B,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;IAC5D,CAAC;IAED,QAAQ;QACJ,MAAM,EAAC,kBAAkB,EAAE,mBAAmB,EAAC,GAAG,IAAI,CAAA;QACtD,OAAO,IAAA,gCAAwB,EAAC,EAAC,kBAAkB,EAAE,mBAAmB,EAAC,CAAC,CAAA;IAC9E,CAAC;IAED,KAAK;QACD,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAA;QAC/B,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAA;QACnC,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAA;IACjC,CAAC;CACJ;AAnID,8CAmIC"}
@@ -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) {
@@ -11,5 +11,6 @@ export interface UpdatePatchSource {
11
11
  fromHash: string;
12
12
  toHash: string;
13
13
  moduleFactories: ModuleFactory[];
14
+ runtimeModules: Expression[];
14
15
  removedModules: string[];
15
16
  }
@@ -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
  /**
@@ -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 [_, modules] = nodePath.node.arguments;
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: [...moduleFactories.values()],
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
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/patch/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/patch/utils.ts"],"names":[],"mappings":"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"}