@tarojs/webpack5-runner 4.2.2-alpha.1 → 4.2.2-alpha.2

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 (51) hide show
  1. package/dist/index.mini.js +4 -15
  2. package/dist/index.mini.js.map +1 -1
  3. package/dist/plugins/BuildNativePlugin.js +11 -22
  4. package/dist/plugins/BuildNativePlugin.js.map +1 -1
  5. package/dist/plugins/HarmonyPlugin.js +1 -1
  6. package/dist/plugins/HarmonyPlugin.js.map +1 -1
  7. package/dist/plugins/MiniCompileModePlugin.js +4 -49
  8. package/dist/plugins/MiniCompileModePlugin.js.map +1 -1
  9. package/dist/plugins/MiniPlugin.js +58 -282
  10. package/dist/plugins/MiniPlugin.js.map +1 -1
  11. package/dist/plugins/TaroNormalModule.js +0 -16
  12. package/dist/plugins/TaroNormalModule.js.map +1 -1
  13. package/dist/plugins/TaroNormalModulesPlugin.js +6 -127
  14. package/dist/plugins/TaroNormalModulesPlugin.js.map +1 -1
  15. package/dist/plugins/TaroSingleEntryPlugin.js +1 -1
  16. package/dist/plugins/TaroSingleEntryPlugin.js.map +1 -1
  17. package/dist/template/comp.js +1 -2
  18. package/dist/utils/component.js +1 -2
  19. package/dist/utils/component.js.map +1 -1
  20. package/dist/utils/webpack.js +1 -40
  21. package/dist/utils/webpack.js.map +1 -1
  22. package/dist/webpack/HarmonyWebpackPlugin.js +1 -3
  23. package/dist/webpack/HarmonyWebpackPlugin.js.map +1 -1
  24. package/dist/webpack/MiniBaseConfig.js +0 -2
  25. package/dist/webpack/MiniBaseConfig.js.map +1 -1
  26. package/dist/webpack/MiniCombination.js +26 -51
  27. package/dist/webpack/MiniCombination.js.map +1 -1
  28. package/dist/webpack/MiniWebpackPlugin.js +1 -17
  29. package/dist/webpack/MiniWebpackPlugin.js.map +1 -1
  30. package/package.json +13 -14
  31. package/dist/plugins/AsyncSubPackagePlugin.js +0 -489
  32. package/dist/plugins/AsyncSubPackagePlugin.js.map +0 -1
  33. package/dist/plugins/SubPackageIndiePlugin.js +0 -1060
  34. package/dist/plugins/SubPackageIndiePlugin.js.map +0 -1
  35. package/dist/plugins/TaroInjectSyncCorePlugin.js +0 -39
  36. package/dist/plugins/TaroInjectSyncCorePlugin.js.map +0 -1
  37. package/dist/shared-runtime/app-shim.js +0 -305
  38. package/dist/shared-runtime/async-provider.js +0 -144
  39. package/dist/shared-runtime/build-shared-runtime.js +0 -377
  40. package/dist/shared-runtime/build-shared-runtime.js.map +0 -1
  41. package/dist/shared-runtime/constants.js +0 -50
  42. package/dist/shared-runtime/constants.js.map +0 -1
  43. package/dist/shared-runtime/entry.sync.js +0 -102
  44. package/dist/shared-runtime/externals.js +0 -96
  45. package/dist/shared-runtime/externals.js.map +0 -1
  46. package/dist/shared-runtime/scan-imperative-api.js +0 -267
  47. package/dist/shared-runtime/scan-imperative-api.js.map +0 -1
  48. package/dist/utils/asyncSubPackage.js +0 -106
  49. package/dist/utils/asyncSubPackage.js.map +0 -1
  50. package/dist/utils/forceCustomWrapper.js +0 -17
  51. package/dist/utils/forceCustomWrapper.js.map +0 -1
@@ -1,27 +1,4 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -35,29 +12,21 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
35
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
36
13
  };
37
14
  Object.defineProperty(exports, "__esModule", { value: true });
38
- exports.STYLE_ISOLATION_SHARED = exports.STYLE_ISOLATION_APPLY_SHARED = exports.customWrapperName = exports.baseCompName = void 0;
39
15
  const node_path_1 = __importDefault(require("node:path"));
40
16
  const helper_1 = require("@tarojs/helper");
41
17
  const loader_utils_1 = require("loader-utils");
42
- const tapable_1 = require("tapable");
43
18
  const EntryDependency_1 = __importDefault(require("webpack/lib/dependencies/EntryDependency"));
44
19
  const TaroSingleEntryDependency_1 = __importDefault(require("../dependencies/TaroSingleEntryDependency"));
45
20
  const prerender_1 = require("../prerender/prerender");
46
- const constants_1 = require("../shared-runtime/constants");
47
21
  const component_1 = require("../utils/component");
48
- const forceCustomWrapper_1 = require("../utils/forceCustomWrapper");
49
22
  const webpack_1 = require("../utils/webpack");
50
- const AsyncSubPackagePlugin_1 = __importDefault(require("./AsyncSubPackagePlugin"));
51
- const SubPackageIndiePlugin_1 = __importStar(require("./SubPackageIndiePlugin"));
52
23
  const TaroLoadChunksPlugin_1 = __importDefault(require("./TaroLoadChunksPlugin"));
53
24
  const TaroNormalModulesPlugin_1 = __importDefault(require("./TaroNormalModulesPlugin"));
54
25
  const TaroSingleEntryPlugin_1 = __importDefault(require("./TaroSingleEntryPlugin"));
55
- exports.baseCompName = 'comp';
56
- exports.customWrapperName = 'custom-wrapper';
26
+ const baseCompName = 'comp';
27
+ const customWrapperName = 'custom-wrapper';
57
28
  const PLUGIN_NAME = 'TaroMiniPlugin';
58
29
  const CHILD_COMPILER_TAG = 'child';
59
- exports.STYLE_ISOLATION_APPLY_SHARED = 'apply-shared';
60
- exports.STYLE_ISOLATION_SHARED = 'shared';
61
30
  function isLoaderExist(loaders, loaderName) {
62
31
  return loaders.some(item => item.loader === loaderName);
63
32
  }
@@ -77,9 +46,6 @@ class TaroMiniPlugin {
77
46
  this.dependencies = new Map();
78
47
  this.pageLoaderName = '@tarojs/taro-loader/lib/page';
79
48
  this.independentPackages = new Map();
80
- this.asyncSubPackagePlugin = null;
81
- this.subPackageIndiePlugin = null;
82
- this.forceCustomWrapperDefineDefinitions = null;
83
49
  const { combination } = options;
84
50
  const miniBuildConfig = combination.config;
85
51
  const { template, baseLevel = 16, experimental } = miniBuildConfig;
@@ -103,22 +69,6 @@ class TaroMiniPlugin {
103
69
  hot: options.hot,
104
70
  loaderMeta: options.loaderMeta || {},
105
71
  };
106
- // 初始化扩展钩子
107
- this.hooks = {
108
- modifyEntries: new tapable_1.SyncWaterfallHook(['entries']),
109
- modifyChunkRequire: new tapable_1.SyncWaterfallHook(['result', 'chunkId', 'miniType']),
110
- afterResolveModule: new tapable_1.SyncHook(['resolveData']),
111
- compileExtraEntries: new tapable_1.SyncHook(['compiler', 'compilation', 'promises']),
112
- modifySkipRootTemplates: new tapable_1.SyncWaterfallHook(['skip']),
113
- generateExtraFiles: new tapable_1.SyncWaterfallHook(['customWrapperRoots', 'compilation', 'compiler']),
114
- modifyPageConfig: new tapable_1.SyncWaterfallHook(['context', 'page', 'customWrapperRoots']),
115
- modifyComponentConfig: new tapable_1.SyncHook(['context', 'customWrapperRoots']),
116
- afterGenerateFiles: new tapable_1.SyncHook(['compilation', 'compiler']),
117
- optimizeAssets: new tapable_1.SyncHook(['compilation']),
118
- modifyConfig: new tapable_1.SyncWaterfallHook(['config', 'componentName']),
119
- modifyStyleImport: new tapable_1.SyncWaterfallHook(['context', 'page']),
120
- modifyShouldProcessStyles: new tapable_1.SyncWaterfallHook(['shouldProcess']),
121
- };
122
72
  if (template.isSupportRecursive === false && baseLevel > 0) {
123
73
  template.baseLevel = baseLevel;
124
74
  }
@@ -149,20 +99,11 @@ class TaroMiniPlugin {
149
99
  apply(compiler) {
150
100
  this.context = compiler.context;
151
101
  this.appEntry = this.getAppEntry(compiler);
152
- if (this.options.newBlended) {
153
- this.subPackageIndiePlugin = new SubPackageIndiePlugin_1.default(this);
154
- this.subPackageIndiePlugin.apply();
155
- // 反向挂到 combination,供主构建结束后的 buildSharedRuntime 读取 mainPackageRoots
156
- // (把同步核 taro-shared-sync.js 拷进每个 mainPackageRoot,实现 subPackageIndie 自包含)。
157
- this.options.combination.subPackageIndiePlugin = this.subPackageIndiePlugin;
158
- }
159
102
  const { commonChunks, combination, framework, isBuildPlugin, newBlended, } = this.options;
160
103
  const { addChunkPages, onCompilerMake, modifyBuildAssets, onParseCreateElement, } = combination.config;
161
104
  /** build mode */
162
105
  compiler.hooks.run.tapAsync(PLUGIN_NAME, this.tryAsync((compiler) => __awaiter(this, void 0, void 0, function* () {
163
106
  yield this.run(compiler);
164
- this.applyForceCustomWrapperDefine(compiler);
165
- this.applyAsyncSubPackagePlugin(compiler);
166
107
  new TaroLoadChunksPlugin_1.default({
167
108
  commonChunks: commonChunks,
168
109
  isBuildPlugin,
@@ -179,8 +120,6 @@ class TaroMiniPlugin {
179
120
  this.isWatch = true;
180
121
  }
181
122
  yield this.run(compiler);
182
- this.applyForceCustomWrapperDefine(compiler);
183
- this.applyAsyncSubPackagePlugin(compiler);
184
123
  if (!this.loadChunksPlugin) {
185
124
  this.loadChunksPlugin = new TaroLoadChunksPlugin_1.default({
186
125
  commonChunks: commonChunks,
@@ -198,7 +137,6 @@ class TaroMiniPlugin {
198
137
  const dependencies = this.dependencies;
199
138
  const promises = [];
200
139
  this.compileIndependentPages(compiler, compilation, dependencies, promises);
201
- this.hooks.compileExtraEntries.call(compiler, compilation, promises);
202
140
  dependencies.forEach(dep => {
203
141
  promises.push(new Promise((resolve, reject) => {
204
142
  compilation.addEntry(this.options.sourceDir, dep, Object.assign({ name: dep.name }, dep.options), err => err ? reject(err) : resolve(null));
@@ -211,26 +149,12 @@ class TaroMiniPlugin {
211
149
  /** For Webpack compilation get factory from compilation.dependencyFactories by denpendence's constructor */
212
150
  compilation.dependencyFactories.set(EntryDependency_1.default, normalModuleFactory);
213
151
  compilation.dependencyFactories.set(TaroSingleEntryDependency_1.default, normalModuleFactory);
214
- if (this.options.newBlended) {
215
- normalModuleFactory.hooks.afterResolve.tap(PLUGIN_NAME, (resolveData) => {
216
- this.hooks.afterResolveModule.call(resolveData);
217
- });
218
- }
219
152
  /**
220
153
  * webpack NormalModule 在 runLoaders 真正解析资源的前一刻,
221
154
  * 往 NormalModule.loaders 中插入对应的 Taro Loader
222
155
  */
223
156
  compiler.webpack.NormalModule.getCompilationHooks(compilation).loader.tap(PLUGIN_NAME, (_loaderContext, module) => {
224
- var _a;
225
157
  const { framework, loaderMeta, pxTransformConfig } = this.options;
226
- // 共享运行时(split 模式):把 sharedRuntime 开关、pkgId(取 output.chunkLoadingGlobal,
227
- // 每业务包已必须唯一)、全局对象键名(constants.ts 单一来源)透传给 app/page loader,
228
- // 供产物注入多包 App 隔离逻辑。
229
- const sharedRuntime = !!this.options.combination.config.sharedRuntime;
230
- const sharedRuntimePkgId = sharedRuntime
231
- ? ((_a = compiler.options.output) === null || _a === void 0 ? void 0 : _a.chunkLoadingGlobal) || 'webpackJsonp'
232
- : undefined;
233
- const sharedRuntimeGlobalKey = sharedRuntime ? constants_1.SHARED_GLOBAL_ASYNC : undefined;
234
158
  if (module.miniType === helper_1.META_TYPE.ENTRY) {
235
159
  const loaderName = '@tarojs/taro-loader';
236
160
  if (!isLoaderExist(module.loaders, loaderName)) {
@@ -245,10 +169,7 @@ class TaroMiniPlugin {
245
169
  behaviorsName: this.options.behaviorsName,
246
170
  blended: this.options.blended,
247
171
  newBlended: this.options.newBlended,
248
- pxTransformConfig,
249
- sharedRuntime,
250
- sharedRuntimePkgId,
251
- sharedRuntimeGlobalKey,
172
+ pxTransformConfig
252
173
  }
253
174
  });
254
175
  }
@@ -279,10 +200,7 @@ class TaroMiniPlugin {
279
200
  appConfig: this.appConfig,
280
201
  runtimePath: this.options.runtimePath,
281
202
  behaviorsName: this.options.behaviorsName,
282
- hot: this.options.hot,
283
- sharedRuntime,
284
- sharedRuntimePkgId,
285
- sharedRuntimeGlobalKey,
203
+ hot: this.options.hot
286
204
  }
287
205
  });
288
206
  }
@@ -374,10 +292,6 @@ class TaroMiniPlugin {
374
292
  let source;
375
293
  const id = (0, webpack_1.getChunkIdOrName)(chunk);
376
294
  const { miniType } = entryModule;
377
- const modifyResult = this.hooks.modifyChunkRequire.call({ source: modules, handled: false }, id, miniType);
378
- if (modifyResult === null || modifyResult === void 0 ? void 0 : modifyResult.handled) {
379
- return modifyResult.source;
380
- }
381
295
  const entryChunk = [{ name: 'app' }];
382
296
  // 所有模块都依赖app.js,确保@tarojs\plugin-platform-xxx\dist\runtime.js先于@tarojs/runtime执行,避免Taro API未被初始化
383
297
  if (this.nativeComponents.has(id) || miniType === helper_1.META_TYPE.STATIC) {
@@ -386,8 +300,7 @@ class TaroMiniPlugin {
386
300
  source = (0, webpack_1.addRequireToSource)(id, modules, v);
387
301
  }
388
302
  });
389
- // 如果没有依赖需要注入,返回原始模块
390
- return source || modules;
303
+ return source;
391
304
  }
392
305
  else if (miniType === helper_1.META_TYPE.PAGE) {
393
306
  return (0, webpack_1.addRequireToSource)(id, modules, entryChunk);
@@ -396,23 +309,6 @@ class TaroMiniPlugin {
396
309
  });
397
310
  });
398
311
  }
399
- /**
400
- * 初始化异步分包插件。
401
- * MiniPlugin 仅作为桥接,具体的 babel 注入、chunk 处理和 app.json 注册由 AsyncSubPackagePlugin 承担。
402
- */
403
- applyAsyncSubPackagePlugin(compiler) {
404
- if (!this.subPackageIndiePlugin)
405
- return;
406
- const asyncRootMap = this.subPackageIndiePlugin.getAsyncSubPackageRootMap();
407
- if (asyncRootMap.size === 0)
408
- return;
409
- if (!this.asyncSubPackagePlugin) {
410
- this.asyncSubPackagePlugin = new AsyncSubPackagePlugin_1.default(this);
411
- }
412
- this.asyncSubPackagePlugin.updateAsyncRootMap(asyncRootMap);
413
- this.asyncSubPackagePlugin.updateAsyncRuntimeRoots(this.subPackageIndiePlugin.getAsyncSubPackageRuntimeRoots());
414
- this.asyncSubPackagePlugin.apply(compiler);
415
- }
416
312
  /**
417
313
  * 根据 webpack entry 配置获取入口文件路径
418
314
  * @returns app 入口文件路径
@@ -458,8 +354,6 @@ class TaroMiniPlugin {
458
354
  */
459
355
  run(compiler) {
460
356
  return __awaiter(this, void 0, void 0, function* () {
461
- var _a;
462
- (_a = this.subPackageIndiePlugin) === null || _a === void 0 ? void 0 : _a.invalidateRunCache();
463
357
  if (this.options.isBuildPlugin) {
464
358
  this.getPluginFiles();
465
359
  this.getConfigFiles(compiler);
@@ -585,12 +479,12 @@ class TaroMiniPlugin {
585
479
  }
586
480
  if (!this.options.template.isSupportRecursive) {
587
481
  pluginJSON.publicComponents = Object.assign({}, publicComponents, {
588
- [exports.baseCompName]: exports.baseCompName
482
+ [baseCompName]: baseCompName
589
483
  });
590
484
  }
591
485
  if (isUsingCustomWrapper) {
592
486
  pluginJSON.publicComponents = Object.assign({}, publicComponents, {
593
- [exports.customWrapperName]: exports.customWrapperName
487
+ [customWrapperName]: customWrapperName
594
488
  });
595
489
  }
596
490
  }
@@ -719,11 +613,8 @@ class TaroMiniPlugin {
719
613
  */
720
614
  addEntry(entryPath, entryName, entryType, options = {}) {
721
615
  let dep;
722
- // 对于 STATIC 类型(如 comp/custom-wrapper),使用 entryName 作为 key 的一部分
723
- // 这允许同一个模板文件被多次添加为不同名称的入口
724
- const depKey = entryType === helper_1.META_TYPE.STATIC ? `${entryPath}#${entryName}` : entryPath;
725
- if (this.dependencies.has(depKey)) {
726
- dep = this.dependencies.get(depKey);
616
+ if (this.dependencies.has(entryPath)) {
617
+ dep = this.dependencies.get(entryPath);
727
618
  dep.name = entryName;
728
619
  dep.loc = { name: entryName };
729
620
  dep.request = entryPath;
@@ -734,7 +625,7 @@ class TaroMiniPlugin {
734
625
  else {
735
626
  dep = new TaroSingleEntryDependency_1.default(entryPath, entryName, { name: entryName }, entryType, options);
736
627
  }
737
- this.dependencies.set(depKey, dep);
628
+ this.dependencies.set(entryPath, dep);
738
629
  }
739
630
  /**
740
631
  * 在 this.dependencies 中新增或修改 app、模板组件、页面、组件等资源模块
@@ -742,17 +633,10 @@ class TaroMiniPlugin {
742
633
  addEntries() {
743
634
  const { template } = this.options;
744
635
  this.addEntry(this.appEntry, 'app', helper_1.META_TYPE.ENTRY);
745
- const entryFlags = this.hooks.modifyEntries.call({
746
- skipRootComp: false,
747
- skipRootWrapper: false,
748
- });
749
- if (!template.isSupportRecursive && !entryFlags.skipRootComp) {
636
+ if (!template.isSupportRecursive) {
750
637
  this.addEntry(node_path_1.default.resolve(__dirname, '..', 'template/comp'), 'comp', helper_1.META_TYPE.STATIC);
751
638
  }
752
- if (!entryFlags.skipRootWrapper) {
753
- this.addEntry(node_path_1.default.resolve(__dirname, '..', 'template/custom-wrapper'), 'custom-wrapper', helper_1.META_TYPE.STATIC);
754
- }
755
- // subPackageIndie 下的 comp/custom-wrapper 统一走独立子编译器,避免被主编译的公共 chunk 共享
639
+ this.addEntry(node_path_1.default.resolve(__dirname, '..', 'template/custom-wrapper'), 'custom-wrapper', helper_1.META_TYPE.STATIC);
756
640
  this.pages.forEach(item => {
757
641
  if (item.isNative) {
758
642
  this.addEntry(item.path, item.name, helper_1.META_TYPE.NORMAL, { isNativePage: true });
@@ -782,39 +666,6 @@ class TaroMiniPlugin {
782
666
  }
783
667
  });
784
668
  }
785
- computeForceCustomWrapperForWebpackMainComp() {
786
- var _a;
787
- if (this.options.template.isSupportRecursive)
788
- return false;
789
- const independentPaths = new Set();
790
- this.independentPackages.forEach(({ pages }) => {
791
- pages.forEach(p => independentPaths.add(p));
792
- });
793
- for (const page of this.pages) {
794
- if (page.isNative || independentPaths.has(page.path))
795
- continue;
796
- const content = (_a = this.filesConfig[this.getConfigFilePath(page.name)]) === null || _a === void 0 ? void 0 : _a.content;
797
- if (content === null || content === void 0 ? void 0 : content.forceCustomWrapper)
798
- return true;
799
- }
800
- return false;
801
- }
802
- computeForceCustomWrapperForIndieRoot(pages) {
803
- return (0, forceCustomWrapper_1.computeForceCustomWrapperForIndependentPackage)(pages, this.pages, this.filesConfig, (p) => this.getConfigFilePath(p));
804
- }
805
- applyForceCustomWrapperDefine(compiler) {
806
- if (this.options.template.isSupportRecursive)
807
- return;
808
- const value = JSON.stringify(this.computeForceCustomWrapperForWebpackMainComp());
809
- if (!this.forceCustomWrapperDefineDefinitions) {
810
- this.forceCustomWrapperDefineDefinitions = {
811
- TARO_FORCE_CUSTOM_WRAPPER: value
812
- };
813
- new compiler.webpack.DefinePlugin(this.forceCustomWrapperDefineDefinitions).apply(compiler);
814
- return;
815
- }
816
- this.forceCustomWrapperDefineDefinitions.TARO_FORCE_CUSTOM_WRAPPER = value;
817
- }
818
669
  replaceExt(file, ext) {
819
670
  return node_path_1.default.join(node_path_1.default.dirname(file), node_path_1.default.basename(file, node_path_1.default.extname(file)) + `${ext}`);
820
671
  }
@@ -974,7 +825,7 @@ class TaroMiniPlugin {
974
825
  filename: `[name]${this.options.fileType.style}`,
975
826
  chunkFilename: `[name]${this.options.fileType.style}`
976
827
  }).apply(childCompiler);
977
- new compiler.webpack.DefinePlugin(Object.assign(Object.assign({}, this.options.constantsReplaceList), { TARO_FORCE_CUSTOM_WRAPPER: JSON.stringify(this.computeForceCustomWrapperForIndieRoot(pages)) })).apply(childCompiler);
828
+ new compiler.webpack.DefinePlugin(this.options.constantsReplaceList).apply(childCompiler);
978
829
  if (compiler.options.optimization) {
979
830
  new SplitChunksPlugin({
980
831
  chunks: 'all',
@@ -1114,12 +965,6 @@ class TaroMiniPlugin {
1114
965
  usingComponents[key] = match ? `${node_path_1.default.sep}${match[0]}` : compPath;
1115
966
  }
1116
967
  }
1117
- cloneThirdPartyComponent(thirdPartyComponents, componentName) {
1118
- const attrs = component_1.componentConfig.thirdPartyComponents.get(componentName);
1119
- if (!attrs || thirdPartyComponents.has(componentName))
1120
- return;
1121
- thirdPartyComponents.set(componentName, new Set(attrs));
1122
- }
1123
968
  /** 生成小程序独立分包的相关文件 */
1124
969
  generateIndependentMiniFiles(compilation, compiler) {
1125
970
  return __awaiter(this, void 0, void 0, function* () {
@@ -1136,27 +981,24 @@ class TaroMiniPlugin {
1136
981
  this.generateTemplateFile(compilation, compiler, `${name}/${baseTemplateName}`, template.buildTemplate, component_1.componentConfig);
1137
982
  if (!template.isSupportRecursive) {
1138
983
  // 如微信、QQ 不支持递归模版的小程序,需要使用自定义组件协助递归
1139
- const compConfig = {
984
+ this.generateConfigFile(compilation, compiler, `${name}/${baseCompName}`, {
1140
985
  component: true,
1141
- styleIsolation: exports.STYLE_ISOLATION_APPLY_SHARED,
986
+ styleIsolation: 'apply-shared',
1142
987
  usingComponents: {
1143
- [exports.baseCompName]: `./${exports.baseCompName}`
988
+ [baseCompName]: `./${baseCompName}`,
989
+ [customWrapperName]: `./${customWrapperName}`
1144
990
  }
1145
- };
1146
- if (isUsingCustomWrapper) {
1147
- compConfig.usingComponents[exports.customWrapperName] = `./${exports.customWrapperName}`;
1148
- }
1149
- this.generateConfigFile(compilation, compiler, `${name}/${exports.baseCompName}`, compConfig);
1150
- this.generateTemplateFile(compilation, compiler, `${name}/${exports.baseCompName}`, template.buildBaseComponentTemplate, this.options.fileType.templ);
991
+ });
992
+ this.generateTemplateFile(compilation, compiler, `${name}/${baseCompName}`, template.buildBaseComponentTemplate, this.options.fileType.templ);
1151
993
  }
1152
- this.generateConfigFile(compilation, compiler, `${name}/${exports.customWrapperName}`, {
994
+ this.generateConfigFile(compilation, compiler, `${name}/${customWrapperName}`, {
1153
995
  component: true,
1154
- styleIsolation: exports.STYLE_ISOLATION_APPLY_SHARED,
996
+ styleIsolation: 'apply-shared',
1155
997
  usingComponents: {
1156
- [exports.customWrapperName]: `./${exports.customWrapperName}`
998
+ [customWrapperName]: `./${customWrapperName}`
1157
999
  }
1158
1000
  });
1159
- this.generateTemplateFile(compilation, compiler, `${name}/${exports.customWrapperName}`, template.buildCustomComponentTemplate, this.options.fileType.templ);
1001
+ this.generateTemplateFile(compilation, compiler, `${name}/${customWrapperName}`, template.buildCustomComponentTemplate, this.options.fileType.templ);
1160
1002
  this.generateXSFile(compilation, compiler, `${name}/utils`);
1161
1003
  });
1162
1004
  this.pages.forEach(page => {
@@ -1179,14 +1021,14 @@ class TaroMiniPlugin {
1179
1021
  this.generateTemplateFile(compilation, compiler, page.path, template.buildPageTemplate, importBaseTemplatePath, config);
1180
1022
  }
1181
1023
  if (config) {
1182
- const importBaseCompPath = (0, helper_1.promoteRelativePath)(node_path_1.default.relative(page.path, node_path_1.default.join(sourceDir, independentName, this.getTargetFilePath(exports.baseCompName, ''))));
1183
- const importCustomWrapperPath = (0, helper_1.promoteRelativePath)(node_path_1.default.relative(page.path, node_path_1.default.join(sourceDir, independentName, this.getTargetFilePath(exports.customWrapperName, ''))));
1024
+ const importBaseCompPath = (0, helper_1.promoteRelativePath)(node_path_1.default.relative(page.path, node_path_1.default.join(sourceDir, independentName, this.getTargetFilePath(baseCompName, ''))));
1025
+ const importCustomWrapperPath = (0, helper_1.promoteRelativePath)(node_path_1.default.relative(page.path, node_path_1.default.join(sourceDir, independentName, this.getTargetFilePath(customWrapperName, ''))));
1184
1026
  config.content.usingComponents = Object.assign({}, config.content.usingComponents);
1185
1027
  if (isUsingCustomWrapper) {
1186
- config.content.usingComponents[exports.customWrapperName] = importCustomWrapperPath;
1028
+ config.content.usingComponents[customWrapperName] = importCustomWrapperPath;
1187
1029
  }
1188
1030
  if (!template.isSupportRecursive && !page.isNative) {
1189
- config.content.usingComponents[exports.baseCompName] = importBaseCompPath;
1031
+ config.content.usingComponents[baseCompName] = importBaseCompPath;
1190
1032
  }
1191
1033
  this.generateConfigFile(compilation, compiler, page.path, config.content);
1192
1034
  }
@@ -1201,8 +1043,6 @@ class TaroMiniPlugin {
1201
1043
  const { modifyMiniConfigs } = combination.config;
1202
1044
  const baseTemplateName = 'base';
1203
1045
  const isUsingCustomWrapper = component_1.componentConfig.thirdPartyComponents.has('custom-wrapper');
1204
- let subPackageIndieCustomWrapperRoots = new Set();
1205
- compilation[SubPackageIndiePlugin_1.subPackageIndieCustomWrapperRootsKey] = subPackageIndieCustomWrapperRoots;
1206
1046
  /**
1207
1047
  * 与原生小程序混写时解析模板与样式
1208
1048
  */
@@ -1222,55 +1062,47 @@ class TaroMiniPlugin {
1222
1062
  const appConfigName = node_path_1.default.basename(appConfigPath).replace(node_path_1.default.extname(appConfigPath), '');
1223
1063
  this.generateConfigFile(compilation, compiler, this.appEntry, this.filesConfig[appConfigName].content);
1224
1064
  }
1225
- let skipRootTemplates = false;
1226
- skipRootTemplates = this.hooks.modifySkipRootTemplates.call(skipRootTemplates);
1227
- if (!template.isSupportRecursive && !skipRootTemplates) {
1065
+ if (!template.isSupportRecursive) {
1228
1066
  // 如微信、QQ 不支持递归模版的小程序,需要使用自定义组件协助递归
1229
- this.generateTemplateFile(compilation, compiler, exports.baseCompName, template.buildBaseComponentTemplate, this.options.fileType.templ);
1067
+ this.generateTemplateFile(compilation, compiler, baseCompName, template.buildBaseComponentTemplate, this.options.fileType.templ);
1230
1068
  const baseCompConfig = {
1231
1069
  component: true,
1232
- styleIsolation: exports.STYLE_ISOLATION_APPLY_SHARED,
1070
+ styleIsolation: 'apply-shared',
1233
1071
  usingComponents: {
1234
- [exports.baseCompName]: `./${exports.baseCompName}`
1072
+ [baseCompName]: `./${baseCompName}`
1235
1073
  }
1236
1074
  };
1237
1075
  if (isUsingCustomWrapper) {
1238
- baseCompConfig.usingComponents[exports.customWrapperName] = `./${exports.customWrapperName}`;
1239
- this.generateConfigFile(compilation, compiler, exports.customWrapperName, {
1076
+ baseCompConfig.usingComponents[customWrapperName] = `./${customWrapperName}`;
1077
+ this.generateConfigFile(compilation, compiler, customWrapperName, {
1240
1078
  component: true,
1241
- styleIsolation: exports.STYLE_ISOLATION_APPLY_SHARED,
1079
+ styleIsolation: 'apply-shared',
1242
1080
  usingComponents: {
1243
- [exports.baseCompName]: `./${exports.baseCompName}`,
1244
- [exports.customWrapperName]: `./${exports.customWrapperName}`
1081
+ [baseCompName]: `./${baseCompName}`,
1082
+ [customWrapperName]: `./${customWrapperName}`
1245
1083
  }
1246
1084
  });
1247
1085
  }
1248
- this.generateConfigFile(compilation, compiler, exports.baseCompName, baseCompConfig);
1086
+ this.generateConfigFile(compilation, compiler, baseCompName, baseCompConfig);
1249
1087
  }
1250
- else if (!skipRootTemplates) {
1088
+ else {
1251
1089
  if (isUsingCustomWrapper) {
1252
- this.generateConfigFile(compilation, compiler, exports.customWrapperName, {
1090
+ this.generateConfigFile(compilation, compiler, customWrapperName, {
1253
1091
  component: true,
1254
- styleIsolation: exports.STYLE_ISOLATION_APPLY_SHARED,
1092
+ styleIsolation: 'apply-shared',
1255
1093
  usingComponents: {
1256
- [exports.customWrapperName]: `./${exports.customWrapperName}`
1094
+ [customWrapperName]: `./${customWrapperName}`
1257
1095
  }
1258
1096
  });
1259
1097
  }
1260
1098
  }
1261
- // 当配置了 mainPackageRoot 时,跳过根目录 base.wxml 和 utils.wxs 的生成
1262
- if (!skipRootTemplates) {
1263
- this.generateTemplateFile(compilation, compiler, baseTemplateName, template.buildTemplate, component_1.componentConfig);
1264
- isUsingCustomWrapper && this.generateTemplateFile(compilation, compiler, exports.customWrapperName, template.buildCustomComponentTemplate, this.options.fileType.templ);
1265
- this.generateXSFile(compilation, compiler, 'utils');
1266
- }
1267
- subPackageIndieCustomWrapperRoots = this.hooks.generateExtraFiles.call(subPackageIndieCustomWrapperRoots, compilation, compiler);
1268
- compilation[SubPackageIndiePlugin_1.subPackageIndieCustomWrapperRootsKey] = subPackageIndieCustomWrapperRoots;
1099
+ this.generateTemplateFile(compilation, compiler, baseTemplateName, template.buildTemplate, component_1.componentConfig);
1100
+ isUsingCustomWrapper && this.generateTemplateFile(compilation, compiler, customWrapperName, template.buildCustomComponentTemplate, this.options.fileType.templ);
1101
+ this.generateXSFile(compilation, compiler, 'utils');
1269
1102
  this.components.forEach(component => {
1270
1103
  const importBaseTemplatePath = (0, helper_1.promoteRelativePath)(node_path_1.default.relative(component.path, node_path_1.default.join(sourceDir, isBuildPlugin ? 'plugin' : '', this.getTemplatePath(baseTemplateName))));
1271
1104
  const config = this.filesConfig[this.getConfigFilePath(component.name)];
1272
1105
  if (config) {
1273
- this.hooks.modifyComponentConfig.call({ config, component }, subPackageIndieCustomWrapperRoots);
1274
1106
  this.generateConfigFile(compilation, compiler, component.path, config.content);
1275
1107
  }
1276
1108
  if (!component.isNative) {
@@ -1278,46 +1110,31 @@ class TaroMiniPlugin {
1278
1110
  }
1279
1111
  });
1280
1112
  this.pages.forEach(page => {
1281
- let importBaseTemplatePath = (0, helper_1.promoteRelativePath)(node_path_1.default.relative(page.path, node_path_1.default.join(sourceDir, isBuildPlugin ? 'plugin' : '', this.getTemplatePath(baseTemplateName))));
1113
+ const importBaseTemplatePath = (0, helper_1.promoteRelativePath)(node_path_1.default.relative(page.path, node_path_1.default.join(sourceDir, isBuildPlugin ? 'plugin' : '', this.getTemplatePath(baseTemplateName))));
1282
1114
  const config = this.filesConfig[this.getConfigFilePath(page.name)];
1283
1115
  // pages 里面会混合独立分包的,在这里需要过滤一下,避免重复生成 assets
1284
1116
  const isIndependent = !!this.getIndependentPackage(page.path);
1285
1117
  if (isIndependent)
1286
1118
  return;
1287
1119
  // 生成页面模板需要在生成页面配置之前,因为会依赖到页面配置的部分内容
1288
- let importBaseCompPath = (0, helper_1.promoteRelativePath)(node_path_1.default.relative(page.path, node_path_1.default.join(sourceDir, isBuildPlugin ? 'plugin' : '', this.getTargetFilePath(exports.baseCompName, ''))));
1289
- let importCustomWrapperPath = (0, helper_1.promoteRelativePath)(node_path_1.default.relative(page.path, node_path_1.default.join(sourceDir, isBuildPlugin ? 'plugin' : '', this.getTargetFilePath(exports.customWrapperName, ''))));
1290
- let isPageRecursiveDisabled = false;
1291
- let shouldUseCustomWrapper = isUsingCustomWrapper;
1292
- const pageConfigContext = this.hooks.modifyPageConfig.call({
1293
- importBaseTemplatePath,
1294
- importBaseCompPath,
1295
- importCustomWrapperPath,
1296
- shouldUseCustomWrapper,
1297
- isPageRecursiveDisabled,
1298
- }, page, subPackageIndieCustomWrapperRoots);
1299
- importBaseTemplatePath = pageConfigContext.importBaseTemplatePath;
1300
- importBaseCompPath = pageConfigContext.importBaseCompPath;
1301
- importCustomWrapperPath = pageConfigContext.importCustomWrapperPath;
1302
- shouldUseCustomWrapper = pageConfigContext.shouldUseCustomWrapper;
1303
- isPageRecursiveDisabled = pageConfigContext.isPageRecursiveDisabled;
1304
1120
  if (!page.isNative) {
1305
1121
  this.generateTemplateFile(compilation, compiler, page.path, template.buildPageTemplate, importBaseTemplatePath, config);
1306
1122
  }
1307
1123
  if (config) {
1124
+ const importBaseCompPath = (0, helper_1.promoteRelativePath)(node_path_1.default.relative(page.path, node_path_1.default.join(sourceDir, isBuildPlugin ? 'plugin' : '', this.getTargetFilePath(baseCompName, ''))));
1125
+ const importCustomWrapperPath = (0, helper_1.promoteRelativePath)(node_path_1.default.relative(page.path, node_path_1.default.join(sourceDir, isBuildPlugin ? 'plugin' : '', this.getTargetFilePath(customWrapperName, ''))));
1308
1126
  config.content.usingComponents = Object.assign({}, config.content.usingComponents);
1309
- if (shouldUseCustomWrapper) {
1310
- config.content.usingComponents[exports.customWrapperName] = importCustomWrapperPath;
1127
+ if (isUsingCustomWrapper) {
1128
+ config.content.usingComponents[customWrapperName] = importCustomWrapperPath;
1311
1129
  }
1312
- if (!template.isSupportRecursive && !page.isNative && !isPageRecursiveDisabled) {
1313
- config.content.usingComponents[exports.baseCompName] = importBaseCompPath;
1130
+ if (!template.isSupportRecursive && !page.isNative) {
1131
+ config.content.usingComponents[baseCompName] = importBaseCompPath;
1314
1132
  }
1315
1133
  this.generateConfigFile(compilation, compiler, page.path, config.content);
1316
1134
  }
1317
1135
  });
1318
1136
  this.generateTabBarFiles(compilation, compiler);
1319
1137
  this.injectCommonStyles(compilation, compiler);
1320
- this.hooks.afterGenerateFiles.call(compilation, compiler);
1321
1138
  if (this.themeLocation) {
1322
1139
  this.generateDarkModeFile(compilation, compiler);
1323
1140
  }
@@ -1350,15 +1167,12 @@ class TaroMiniPlugin {
1350
1167
  delete compilation.assets[assetPath];
1351
1168
  }
1352
1169
  });
1353
- this.hooks.optimizeAssets.call(compilation);
1354
1170
  });
1355
1171
  }
1356
1172
  generateConfigFile(compilation, compiler, filePath, config) {
1357
1173
  const { RawSource } = compiler.webpack.sources;
1358
1174
  const fileConfigName = this.getConfigPath(this.getComponentName(filePath));
1359
- const componentName = this.getComponentName(filePath);
1360
- config = this.hooks.modifyConfig.call(config, componentName);
1361
- const unofficialConfigs = ['enableShareAppMessage', 'enableShareTimeline', 'enablePageMeta', 'components', 'forceCustomWrapper'];
1175
+ const unofficialConfigs = ['enableShareAppMessage', 'enableShareTimeline', 'enablePageMeta', 'components'];
1362
1176
  unofficialConfigs.forEach(item => {
1363
1177
  delete config[item];
1364
1178
  });
@@ -1504,21 +1318,12 @@ class TaroMiniPlugin {
1504
1318
  });
1505
1319
  });
1506
1320
  }
1507
- // 判断是否需要处理样式:有 common chunks 或者有 app.wxss(可被扩展插件修改)
1508
- const hasAppStyle = !!assets[appStyle];
1509
- let shouldProcessStyles = commons.size() > 0;
1510
- if (!hasAppStyle) {
1511
- shouldProcessStyles = false;
1512
- }
1513
- shouldProcessStyles = this.hooks.modifyShouldProcessStyles.call(shouldProcessStyles);
1514
- if (shouldProcessStyles) {
1321
+ if (commons.size() > 0) {
1515
1322
  const APP_STYLE_NAME = 'app-origin' + styleExt;
1516
1323
  assets[APP_STYLE_NAME] = new ConcatSource(originSource);
1517
1324
  const source = new ConcatSource('');
1518
1325
  source.add(`@import ${JSON.stringify((0, loader_utils_1.urlToRequest)(APP_STYLE_NAME))};`);
1519
- if (commons.size() > 0) {
1520
- source.add(commons);
1521
- }
1326
+ source.add(commons);
1522
1327
  source.add('\n');
1523
1328
  assets[appStyle] = source;
1524
1329
  if (newBlended) {
@@ -1534,43 +1339,14 @@ class TaroMiniPlugin {
1534
1339
  }
1535
1340
  const source = new ConcatSource('');
1536
1341
  const originSource = assets[pageStyle];
1537
- const styleImportContext = this.hooks.modifyStyleImport.call({
1538
- importStatement: '',
1539
- shouldSkip: false,
1540
- isMainPackageRoot: false,
1541
- }, page);
1542
- if (styleImportContext.shouldSkip) {
1543
- // no-op
1544
- }
1545
- else if (styleImportContext.importStatement) {
1546
- source.add(styleImportContext.importStatement);
1547
- }
1548
- else {
1549
- componentCommons.forEach(item => {
1550
- source.add(`@import ${JSON.stringify((0, loader_utils_1.urlToRequest)(node_path_1.default.posix.relative(node_path_1.default.dirname(pageStyle), item)))};\n`);
1551
- });
1552
- }
1342
+ componentCommons.forEach(item => {
1343
+ source.add(`@import ${JSON.stringify((0, loader_utils_1.urlToRequest)(node_path_1.default.posix.relative(node_path_1.default.dirname(pageStyle), item)))};\n`);
1344
+ });
1553
1345
  source.add(originSource);
1554
1346
  assets[pageStyle] = source;
1555
1347
  }
1556
1348
  else {
1557
- // 普通页面(非本地化组件)
1558
- const styleImportContext = this.hooks.modifyStyleImport.call({
1559
- importStatement: '',
1560
- shouldSkip: false,
1561
- isMainPackageRoot: false,
1562
- }, page);
1563
- if (styleImportContext.importStatement) {
1564
- const source = new ConcatSource('');
1565
- if (pageStyle in assets) {
1566
- source.add(assets[pageStyle]);
1567
- }
1568
- const importSource = new ConcatSource('');
1569
- importSource.add(styleImportContext.importStatement);
1570
- importSource.add(source);
1571
- assets[pageStyle] = importSource;
1572
- }
1573
- else if (pageStyle in assets) {
1349
+ if (pageStyle in assets) {
1574
1350
  const source = new ConcatSource('');
1575
1351
  const originSource = assets[pageStyle];
1576
1352
  source.add(`@import ${JSON.stringify((0, loader_utils_1.urlToRequest)(node_path_1.default.posix.relative(node_path_1.default.dirname(pageStyle), 'app' + styleExt)))};\n`);