@taro-hmr-compile/plugin-webpack 0.0.1-alpha.9 → 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 (38) hide show
  1. package/README.md +101 -0
  2. package/dist/compile/hmr-compiler-plugin.d.ts +7 -7
  3. package/dist/compile/hmr-compiler-plugin.js +2 -29
  4. package/dist/compile/hmr-compiler-plugin.js.map +1 -1
  5. package/dist/compile/hmr-output-plugin.d.ts +28 -0
  6. package/dist/compile/hmr-output-plugin.js +145 -0
  7. package/dist/compile/hmr-output-plugin.js.map +1 -0
  8. package/dist/compile/hmr-style-plugin.d.ts +25 -0
  9. package/dist/compile/hmr-style-plugin.js +53 -0
  10. package/dist/compile/hmr-style-plugin.js.map +1 -0
  11. package/dist/compile/lazy-compiler-loader.d.ts +1 -0
  12. package/dist/compile/lazy-compiler-loader.js +10 -2
  13. package/dist/compile/lazy-compiler-loader.js.map +1 -1
  14. package/dist/constants.d.ts +1 -0
  15. package/dist/constants.js +2 -1
  16. package/dist/constants.js.map +1 -1
  17. package/dist/index.d.ts +2 -0
  18. package/dist/index.js +17 -6
  19. package/dist/index.js.map +1 -1
  20. package/dist/patch/hmr-patch-plugin.d.ts +6 -0
  21. package/dist/patch/hmr-patch-plugin.js +53 -4
  22. package/dist/patch/hmr-patch-plugin.js.map +1 -1
  23. package/dist/patch/hmr-patch-processor.d.ts +2 -1
  24. package/dist/patch/hmr-patch-processor.js +37 -21
  25. package/dist/patch/hmr-patch-processor.js.map +1 -1
  26. package/dist/patch/utils.js +3 -3
  27. package/dist/patch/utils.js.map +1 -1
  28. package/package.json +4 -2
  29. package/src/compile/hmr-compiler-plugin.ts +9 -34
  30. package/src/compile/hmr-output-plugin.ts +158 -0
  31. package/src/compile/hmr-style-plugin.ts +70 -0
  32. package/src/compile/lazy-compiler-loader.ts +11 -2
  33. package/src/constants.ts +2 -0
  34. package/src/index.ts +21 -9
  35. package/src/patch/hmr-patch-plugin.ts +53 -5
  36. package/src/patch/hmr-patch-processor.ts +45 -27
  37. package/src/patch/utils.ts +3 -3
  38. package/src/types/taro-service.d.ts +15 -0
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,14 +34,17 @@ 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)
@@ -52,15 +57,21 @@ exports.default = (ctx, pluginOpts) => {
52
57
  .end()
53
58
  .use('lazy-compiler-loader')
54
59
  .loader(require.resolve('./compile/lazy-compiler-loader'))
55
- .options({ appPath, sourcePath, appConfig, framework, compileUrl })
60
+ .options({ appPath, sourcePath, appConfig, framework, compileUrl, lazyCompileExclude: pluginOpts.lazyCompileExclude })
56
61
  .end();
57
62
  chain.output
58
63
  .set('hotUpdateChunkFilename', `${constants_1.HMR_OUTPUT_PATH}/[id].[fullhash].hot-update.js`)
59
64
  .set('hotUpdateMainFilename', `${constants_1.HMR_OUTPUT_PATH}/[runtime].[fullhash].hot-update.json`);
60
65
  const { patchHistoryLimit } = pluginOpts;
61
- const [{ filename: styleFilename }] = ((_b = chain.plugin('miniCssExtractPlugin')) === null || _b === void 0 ? void 0 : _b.get('args')) || [];
62
- 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
+ }]);
63
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
+ }]);
64
75
  chain.plugin('hmr-patch-plugin').use(hmr_patch_plugin_1.HmrPatchPlugin, [{ patchHistoryLimit }]);
65
76
  chain.plugin('hmr-server-plugin').use(hmr_server_plugin_1.HmrServerPlugin, [{ host, port }]);
66
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":"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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, (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":"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"}
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;
@@ -61,27 +64,40 @@ class HmrPatchProcessor {
61
64
  this.moduleHashesByFullHash.delete(oldestUpdatePatch.toHash);
62
65
  }
63
66
  processChunkModules(opt) {
64
- const { hash: fullHash } = opt.compilation;
65
- 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);
66
70
  modules.forEach(moduleFactory => {
67
71
  var _a;
68
72
  const { moduleId, factory } = moduleFactory;
69
- if (opt.isBootstrapChunk) {
70
- 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();
71
75
  compilationFactories.set(moduleId, { moduleId, factory });
72
- this.bootstrapFactoriesByCompilation.set(opt.compilation, compilationFactories);
76
+ this.bootstrapFactoriesByCompilation.set(compilation, compilationFactories);
73
77
  }
74
- 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))
75
92
  return;
76
- const moduleHashes = (() => {
77
- const hasCurFullHashModuleHashMap = this.moduleHashesByFullHash.has(fullHash);
78
- if (!hasCurFullHashModuleHashMap)
79
- this.moduleHashesByFullHash.set(fullHash, new Map());
80
- return this.moduleHashesByFullHash.get(fullHash);
81
- })();
82
- const { code: source } = (0, generator_1.default)(factory, { compact: true, comments: false, minified: true, });
83
- const factoryHash = (0, crypto_1.createHash)('sha256').update(source).digest('hex');
84
- 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);
85
101
  });
86
102
  }
87
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"}
@@ -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
  * 解析热更新产物
@@ -132,7 +132,7 @@ const mergeUpdatePatches = (basePatch, nextPatch) => {
132
132
  type: 'update',
133
133
  fromHash: basePatch.fromHash,
134
134
  toHash: nextPatch.toHash,
135
- moduleFactories: [...moduleFactories.values()],
135
+ moduleFactories: Array.from(moduleFactories.values()),
136
136
  runtimeModules: [...basePatch.runtimeModules, ...nextPatch.runtimeModules],
137
137
  removedModules: [...removedModules],
138
138
  };
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAA;IAElF,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,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAA;AAC/C,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;IACxD,MAAM,cAAc,GAAmB,EAAE,CAAA;IAEzC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAEpB,MAAM,GAAG,GAAG,IAAA,cAAK,EAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAC,UAAU,EAAE,QAAQ,EAAC,CAAC,CAAA;QAE3E,IAAA,kBAAQ,EAAC,GAAG,EAAE;YACV,cAAc,CAAC,QAAQ;gBACnB,MAAM,EAAC,MAAM,EAAC,GAAG,QAAQ,CAAC,IAAI,CAAA;gBAE9B,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC;oBAAE,OAAM;gBAEzF,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC;oBAAE,OAAM;gBAExG,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAA;gBAEpD,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC;oBAAE,OAAM;gBAE1C,oBAAoB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;gBAC7F,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC;oBAAE,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC7D,CAAC;SACJ,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAA;IAExC,SAAS,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QAEzB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAsB,CAAA;QAEnF,MAAM,EAAC,CAAC,EAAE,iBAAiB,GAAG,EAAE,EAAC,GAAG,QAAQ,CAAA;QAE5C,iBAAiB,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;IACzF,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,EAAC,eAAe,EAAE,cAAc,EAAE,cAAc,EAAC,CAAA;AAC5D,CAAC,CAAA;AAxCY,QAAA,oBAAoB,wBAwChC;AAED;;;GAGG;AACI,MAAM,eAAe,GAAG,CAAC,MAAc,EAA8B,EAAE;IAC1E,MAAM,GAAG,GAAG,IAAA,cAAK,EAAC,IAAI,MAAM,GAAG,EAAE,EAAC,UAAU,EAAE,QAAQ,EAAC,CAAC,CAAA;IAExD,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAA;IAEpC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,UAAU,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;IAE9I,MAAM,eAAe,GAAG,IAAI,GAAG,EAAyB,CAAA;IAExD,oBAAoB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;IAE1G,OAAO,eAAe,CAAA;AAC1B,CAAC,CAAA;AAZY,QAAA,eAAe,mBAY3B;AAEM,MAAM,kBAAkB,GAAG,CAAC,SAA4B,EAAE,SAA4B,EAAsB,EAAE;IACjH,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,SAAS,CAAC,MAAM,QAAQ,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAA;IAEnJ,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IAExH,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;IAExD,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;QAC9C,MAAM,EAAC,QAAQ,EAAC,GAAG,aAAa,CAAA;QAChC,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;QAC5C,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;IAEF,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QACxC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAChC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAChC,CAAC,CAAC,CAAA;IAEF,OAAO;QACH,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;QACrD,cAAc,EAAE,CAAC,GAAG,SAAS,CAAC,cAAc,EAAE,GAAG,SAAS,CAAC,cAAc,CAAC;QAC1E,cAAc,EAAE,CAAC,GAAG,cAAc,CAAC;KACtC,CAAA;AACL,CAAC,CAAA;AA1BY,QAAA,kBAAkB,sBA0B9B;AAOM,MAAM,wBAAwB,GAAG,CAAC,GAAiC,EAAU,EAAE;IAClF,MAAM,EAAC,kBAAkB,EAAE,mBAAmB,EAAC,GAAG,GAAG,CAAA;IACrD,MAAM,mBAAmB,GAAG,kBAAQ,CAAC,UAAU,CAAC;;;OAG7C,CAAC,CAAA;IACJ,MAAM,gBAAgB,GAAG,kBAAQ,CAAC,UAAU,CAAC;;;;;;;OAO1C,CAAC,CAAA;IACJ,MAAM,eAAe,GAAG,kBAAQ,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAA;IACrE,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE;QACnF,MAAM,EAAC,QAAQ,EAAE,OAAO,EAAC,GAAG,aAAa,CAAA;QACzC,OAAO,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;IACF,MAAM,UAAU,GAAG;QACf,mBAAmB,CAAC,EAAC,OAAO,EAAE,CAAC,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,EAAC,CAAC;QACpE,GAAG,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAC/B,MAAM,aAAa,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE;gBAC9D,MAAM,EAAC,QAAQ,EAAE,OAAO,EAAC,GAAG,aAAa,CAAA;gBACzC,OAAO,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAA;YAC/D,CAAC,CAAC,CAAA;YACF,OAAO,gBAAgB,CAAC;gBACpB,SAAS,EAAE,KAAK,CAAC,QAAQ;gBACzB,OAAO,EAAE,KAAK,CAAC,MAAM;gBACrB,OAAO,EAAE,CAAC,CAAC,gBAAgB,CAAC,aAAa,CAAC;gBAC1C,eAAe,EAAE,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,cAAc,CAAC;gBACxD,eAAe,EAAE,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;aACtG,CAAC,CAAA;QACN,CAAC,CAAC;KACL,CAAA;IAED,OAAO,IAAA,mBAAS,EAAC,eAAe,CAAC,EAAC,OAAO,EAAE,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,EAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AACpF,CAAC,CAAA;AArCY,QAAA,wBAAwB,4BAqCpC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taro-hmr-compile/plugin-webpack",
3
- "version": "0.0.1-alpha.9",
3
+ "version": "0.0.1",
4
4
  "description": "",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -34,6 +34,7 @@
34
34
  "@types/babel__template": "^7.4.4",
35
35
  "@types/babel__traverse": "^7.28.0",
36
36
  "@types/debug": "^4.1.13",
37
+ "@types/lodash": "^4.17.26",
37
38
  "@types/node": "^22.20.1",
38
39
  "typescript": "^5.8.2",
39
40
  "webpack": "^5.110.3"
@@ -44,8 +45,9 @@
44
45
  "@babel/template": "^7.29.7",
45
46
  "@babel/traverse": "^7.29.8",
46
47
  "@babel/types": "^7.29.8",
47
- "@taro-hmr-compile/core": "0.0.1-alpha.9",
48
+ "@taro-hmr-compile/core": "0.0.1",
48
49
  "debug": "^4.4.3",
50
+ "lodash": "^4.18.1",
49
51
  "tapable": "^2.3.3",
50
52
  "webpack-sources": "^3.5.1"
51
53
  },
@@ -20,18 +20,21 @@ interface TaroNormalModule {
20
20
  loaders: Array<{ loader: string; options?: unknown }>
21
21
  }
22
22
 
23
- type StyleFilename = NonNullable<Compiler['options']['output']['cssFilename']>
24
-
25
23
  export interface HmrCompilerPluginOptions {
26
24
  paths: IPaths
27
25
  appConfig: AppConfig
28
- styleFilename?: StyleFilename
29
26
  debugNamespaces?: string
30
27
  }
31
28
 
32
29
  type CompileRequested = SyncHook<[page: string]>
33
30
 
34
- type ChunkModulesRendered = SyncHook<[source: string, isPageChunk: boolean]>
31
+ interface ChunkModulesRenderedOptions {
32
+ source: string
33
+ isBootstrapChunk: boolean
34
+ chunk: Chunk
35
+ }
36
+
37
+ type ChunkModulesRendered = SyncHook<[options: ChunkModulesRenderedOptions]>
35
38
 
36
39
  export interface HmrCompilerHooks {
37
40
  compileRequested: CompileRequested
@@ -56,8 +59,6 @@ export class HmrCompilerPlugin {
56
59
 
57
60
  private compiler?: Compiler
58
61
 
59
- private hasCompletedInitialBuild = false
60
-
61
62
  // 页面编译请求可能在任意时刻到达。先排队到下一轮 watchRun,避免与正在执行的编译相互覆盖。
62
63
  private readonly pendingFiles = new Set<string>()
63
64
 
@@ -80,7 +81,7 @@ export class HmrCompilerPlugin {
80
81
 
81
82
  static getCompilationHooks(compilation: Compilation): HmrCompilationHooks {
82
83
  if (!HmrCompilerPlugin.compilationHooksMap.get(compilation)) {
83
- const chunkModulesRendered: ChunkModulesRendered = new SyncHook(['source', 'isBootstrapChunk'])
84
+ const chunkModulesRendered: ChunkModulesRendered = new SyncHook(['options'])
84
85
  HmrCompilerPlugin.compilationHooksMap.set(compilation, {chunkModulesRendered})
85
86
  }
86
87
  return HmrCompilerPlugin.compilationHooksMap.get(compilation)!
@@ -134,7 +135,7 @@ export class HmrCompilerPlugin {
134
135
  // 因而 hash、HMR diff 和 hot-update 仍以完整模块图为准。
135
136
  javascriptHooks.renderChunk.tap({name: PLUGIN_NAME, stage: -10_000}, (source, {chunk}) => {
136
137
  const isBootstrapChunk = isPageChunk(chunk)
137
- hmrHooks.chunkModulesRendered.call(source.source().toString(), isBootstrapChunk)
138
+ hmrHooks.chunkModulesRendered.call({source: source.source().toString(), isBootstrapChunk, chunk})
138
139
  return isBootstrapChunk ? new RawSource('{}') : source
139
140
  })
140
141
 
@@ -167,17 +168,6 @@ export class HmrCompilerPlugin {
167
168
  },
168
169
  )
169
170
 
170
- const stage = compiler.webpack.Compilation.PROCESS_ASSETS_STAGE_REPORT
171
- compilation.hooks.processAssets.tap({name: PLUGIN_NAME, stage}, () => {
172
- if (!this.hasCompletedInitialBuild && compilation.hash && compilation.errors.length === 0) {
173
- this.emitMissingPageStyleAssets(compilation)
174
- }
175
- })
176
- })
177
-
178
- compiler.hooks.afterEmit.tap(PLUGIN_NAME, compilation => {
179
- const isSuccessful = compilation.errors.length === 0 && Boolean(compilation.hash)
180
- this.hasCompletedInitialBuild = this.hasCompletedInitialBuild || isSuccessful
181
171
  })
182
172
 
183
173
  // 当前批次完成后释放快照;编译期间新进入 pendingFiles 的请求不会被清理。
@@ -204,23 +194,8 @@ export class HmrCompilerPlugin {
204
194
  return Array.from(pages).some(page => compilation.entrypoints.get(page)?.getEntrypointChunk() === chunk)
205
195
  }
206
196
 
207
- /** PageShell 不包含真实页面的样式依赖,为缺失的页面样式补充空资产。 */
208
- private emitMissingPageStyleAssets(compilation: Compilation) {
209
- const {appConfig, styleFilename} = this.options
210
- if (!styleFilename) return
211
-
212
- getAllPages(appConfig).forEach(page => {
213
- const chunk = compilation.entrypoints.get(page)?.getEntrypointChunk()
214
- if (!chunk) return
215
-
216
- const assetName = compilation.getPath(styleFilename, {chunk, contentHashType: 'css/mini-extract'})
217
- if (!compilation.getAsset(assetName)) compilation.emitAsset(assetName, new RawSource(''))
218
- })
219
- }
220
-
221
197
  private reset() {
222
198
  clearCompiledPages(this.options.paths.appPath)
223
- this.hasCompletedInitialBuild = false
224
199
  this.rebuildingFiles.clear()
225
200
  this.pendingFiles.clear()
226
201
  }