@tarojs/webpack5-runner 3.5.0-alpha.0

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 (94) hide show
  1. package/README.md +3 -0
  2. package/dist/dependencies/TaroSingleEntryDependency.js +18 -0
  3. package/dist/dependencies/TaroSingleEntryDependency.js.map +1 -0
  4. package/dist/index.h5.js +224 -0
  5. package/dist/index.h5.js.map +1 -0
  6. package/dist/index.mini.js +69 -0
  7. package/dist/index.mini.js.map +1 -0
  8. package/dist/loaders/miniTemplateLoader.js +63 -0
  9. package/dist/loaders/miniTemplateLoader.js.map +1 -0
  10. package/dist/plugins/BuildNativePlugin.js +124 -0
  11. package/dist/plugins/BuildNativePlugin.js.map +1 -0
  12. package/dist/plugins/H5Plugin.js +91 -0
  13. package/dist/plugins/H5Plugin.js.map +1 -0
  14. package/dist/plugins/MiniPlugin.js +1027 -0
  15. package/dist/plugins/MiniPlugin.js.map +1 -0
  16. package/dist/plugins/MiniSplitChunksPlugin.js +678 -0
  17. package/dist/plugins/MiniSplitChunksPlugin.js.map +1 -0
  18. package/dist/plugins/TaroLoadChunksPlugin.js +176 -0
  19. package/dist/plugins/TaroLoadChunksPlugin.js.map +1 -0
  20. package/dist/plugins/TaroNormalModule.js +51 -0
  21. package/dist/plugins/TaroNormalModule.js.map +1 -0
  22. package/dist/plugins/TaroNormalModulesPlugin.js +63 -0
  23. package/dist/plugins/TaroNormalModulesPlugin.js.map +1 -0
  24. package/dist/plugins/TaroSingleEntryPlugin.js +26 -0
  25. package/dist/plugins/TaroSingleEntryPlugin.js.map +1 -0
  26. package/dist/plugins/WebpackBarPlugin.js +26 -0
  27. package/dist/plugins/WebpackBarPlugin.js.map +1 -0
  28. package/dist/postcss/postcss.h5.js +70 -0
  29. package/dist/postcss/postcss.h5.js.map +1 -0
  30. package/dist/postcss/postcss.mini.js +75 -0
  31. package/dist/postcss/postcss.mini.js.map +1 -0
  32. package/dist/prebundle/bundle.js +167 -0
  33. package/dist/prebundle/bundle.js.map +1 -0
  34. package/dist/prebundle/constant.js +60 -0
  35. package/dist/prebundle/constant.js.map +1 -0
  36. package/dist/prebundle/index.js +234 -0
  37. package/dist/prebundle/index.js.map +1 -0
  38. package/dist/prebundle/scanImports.js +193 -0
  39. package/dist/prebundle/scanImports.js.map +1 -0
  40. package/dist/prebundle/utils.js +170 -0
  41. package/dist/prebundle/utils.js.map +1 -0
  42. package/dist/prebundle/webpack/TaroContainerEntryModule.js +76 -0
  43. package/dist/prebundle/webpack/TaroContainerEntryModule.js.map +1 -0
  44. package/dist/prebundle/webpack/TaroContainerPlugin.js +75 -0
  45. package/dist/prebundle/webpack/TaroContainerPlugin.js.map +1 -0
  46. package/dist/prebundle/webpack/TaroContainerReferencePlugin.js +124 -0
  47. package/dist/prebundle/webpack/TaroContainerReferencePlugin.js.map +1 -0
  48. package/dist/prebundle/webpack/index.js +1 -0
  49. package/dist/prebundle/webpack/index.js.map +1 -0
  50. package/dist/prerender/prerender.js +228 -0
  51. package/dist/prerender/prerender.js.map +1 -0
  52. package/dist/template/comp.js +4 -0
  53. package/dist/template/component.js +10 -0
  54. package/dist/template/component.js.map +1 -0
  55. package/dist/template/custom-wrapper.js +7 -0
  56. package/dist/template/custom-wrapper.js.map +1 -0
  57. package/dist/utils/H5AppInstance.js +110 -0
  58. package/dist/utils/H5AppInstance.js.map +1 -0
  59. package/dist/utils/index.js +53 -0
  60. package/dist/utils/index.js.map +1 -0
  61. package/dist/utils/logHelper.js +153 -0
  62. package/dist/utils/logHelper.js.map +1 -0
  63. package/dist/utils/types.js +3 -0
  64. package/dist/utils/types.js.map +1 -0
  65. package/dist/utils/webpack.js +12 -0
  66. package/dist/utils/webpack.js.map +1 -0
  67. package/dist/webpack/BaseConfig.js +155 -0
  68. package/dist/webpack/BaseConfig.js.map +1 -0
  69. package/dist/webpack/BuildNativePlugin.js +57 -0
  70. package/dist/webpack/BuildNativePlugin.js.map +1 -0
  71. package/dist/webpack/Combination.js +69 -0
  72. package/dist/webpack/Combination.js.map +1 -0
  73. package/dist/webpack/H5BaseConfig.js +30 -0
  74. package/dist/webpack/H5BaseConfig.js.map +1 -0
  75. package/dist/webpack/H5Combination.js +106 -0
  76. package/dist/webpack/H5Combination.js.map +1 -0
  77. package/dist/webpack/H5WebpackModule.js +261 -0
  78. package/dist/webpack/H5WebpackModule.js.map +1 -0
  79. package/dist/webpack/H5WebpackPlugin.js +85 -0
  80. package/dist/webpack/H5WebpackPlugin.js.map +1 -0
  81. package/dist/webpack/MiniBaseConfig.js +73 -0
  82. package/dist/webpack/MiniBaseConfig.js.map +1 -0
  83. package/dist/webpack/MiniCombination.js +115 -0
  84. package/dist/webpack/MiniCombination.js.map +1 -0
  85. package/dist/webpack/MiniWebpackModule.js +204 -0
  86. package/dist/webpack/MiniWebpackModule.js.map +1 -0
  87. package/dist/webpack/MiniWebpackPlugin.js +154 -0
  88. package/dist/webpack/MiniWebpackPlugin.js.map +1 -0
  89. package/dist/webpack/WebpackModule.js +174 -0
  90. package/dist/webpack/WebpackModule.js.map +1 -0
  91. package/dist/webpack/WebpackPlugin.js +84 -0
  92. package/dist/webpack/WebpackPlugin.js.map +1 -0
  93. package/index.js +7 -0
  94. package/package.json +103 -0
@@ -0,0 +1,193 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.scanImports = void 0;
13
+ const esbuild_1 = require("esbuild");
14
+ const path = require("path");
15
+ const fs = require("fs");
16
+ const utils_1 = require("./utils");
17
+ const constant_1 = require("./constant");
18
+ function scanImports({ entries, combination, include, exclude }) {
19
+ return __awaiter(this, void 0, void 0, function* () {
20
+ const { appPath, config } = combination;
21
+ const deps = new Map();
22
+ // plugin-platform 等插件的 runtime 文件入口
23
+ const runtimePath = typeof config.runtimePath === 'string' ? [config.runtimePath] : config.runtimePath;
24
+ const includes = [
25
+ '@tarojs/taro',
26
+ '@tarojs/runtime',
27
+ ...(runtimePath || []),
28
+ ...include
29
+ ];
30
+ const excludes = [
31
+ // 编译 Host 时需要扫描 @tarojs/components 的 useExports,因此不能被 external
32
+ '@tarojs/components',
33
+ ...exclude
34
+ ];
35
+ const scanImportsPlugin = getScanImportsPlugin(deps, includes, excludes);
36
+ yield Promise.all(entries.map(entry => esbuild_1.default.build({
37
+ absWorkingDir: appPath,
38
+ entryPoints: [entry],
39
+ bundle: true,
40
+ write: false,
41
+ format: 'esm',
42
+ plugins: [
43
+ scanImportsPlugin
44
+ ]
45
+ })));
46
+ // 有一些 Webpack loaders 添加的依赖没有办法提前分析出来
47
+ // 可以把它们写进 includes,然后在这里 resolve 后加入到 deps
48
+ const resolve = utils_1.getResolve();
49
+ yield Promise.all(includes.map((item) => __awaiter(this, void 0, void 0, function* () {
50
+ const resolvePath = yield resolve(appPath, item);
51
+ deps.set(item, resolvePath);
52
+ })));
53
+ return deps;
54
+ });
55
+ }
56
+ exports.scanImports = scanImports;
57
+ /**
58
+ * 收集 node_modules 依赖
59
+ * Circumstances:
60
+ * 1. import 'xxx.scss', import '../xxx.png' => external
61
+ * 2. import 'xxx.vue', import '../xxx.vue'
62
+ * => collect script: { key: { loader, contents } }
63
+ * => virtual-mode compose of "export * from 'key';""
64
+ * => load virtual-mode and return { loader, contents }
65
+ * 3. import 'xxx', import 'xxx/yyy.ext', import '@xxx/alias'
66
+ * => resolve
67
+ * => path.includes(node_modules) && .js|.jsx|.ts|.tsx => collect + external
68
+ * => .vue => (2)
69
+ * => asserts => (1)
70
+ * => src => return
71
+ * 4. import '../xxx', import '../xxx.ext'
72
+ * => resolve
73
+ * => .vue => (2)
74
+ * => src => return
75
+ */
76
+ function getScanImportsPlugin(deps, includes, excludes) {
77
+ const resolve = utils_1.getResolve();
78
+ // for storing vue <script> contents
79
+ const scripts = new Map();
80
+ return {
81
+ name: 'scanImports',
82
+ setup(build) {
83
+ // assets
84
+ build.onResolve(({ filter: constant_1.assetsRE }), utils_1.externalModule);
85
+ // .vue
86
+ build.onLoad({ filter: /\.vue$/, namespace: 'vue' }, ({ path }) => {
87
+ let raw = fs.readFileSync(path, 'utf-8');
88
+ raw = raw.replace(constant_1.commentRE, '<!---->');
89
+ const regex = constant_1.scriptRE;
90
+ regex.lastIndex = 0;
91
+ let js = '';
92
+ let scriptId = 0;
93
+ let match;
94
+ while ((match = regex.exec(raw))) {
95
+ const [, openTag, content] = match;
96
+ const langMatch = openTag.match(constant_1.langRE);
97
+ const lang = langMatch && (langMatch[1] || langMatch[2] || langMatch[3]);
98
+ let loader = 'js';
99
+ if (lang === 'ts' || lang === 'tsx' || lang === 'jsx') {
100
+ loader = lang;
101
+ }
102
+ if (content.trim()) {
103
+ // append imports in TS to prevent esbuild from removing them
104
+ // since they may be used in the template
105
+ const contents = content +
106
+ (loader.startsWith('ts') ? extractImportPaths(content) : '');
107
+ const key = `${path}?id=${scriptId++}`;
108
+ scripts.set(key, {
109
+ loader,
110
+ contents
111
+ });
112
+ const virtualModulePath = JSON.stringify(constant_1.virtualModulePrefix + key);
113
+ js += `export * from ${virtualModulePath}\n`;
114
+ }
115
+ }
116
+ return {
117
+ loader: 'js',
118
+ contents: js
119
+ };
120
+ });
121
+ build.onResolve(({ filter: constant_1.virtualModuleRE }), ({ path }) => {
122
+ return {
123
+ path: path.replace(constant_1.virtualModulePrefix, ''),
124
+ namespace: 'script'
125
+ };
126
+ });
127
+ build.onLoad(({ filter: /.*/, namespace: 'script' }), ({ path }) => {
128
+ return scripts.get(path);
129
+ });
130
+ // bare imports
131
+ build.onResolve({ filter: /^[\w@][^:]/ }, ({ path: id, importer }) => __awaiter(this, void 0, void 0, function* () {
132
+ if (utils_1.isExclude(id, excludes))
133
+ return utils_1.externalModule({ path: id });
134
+ if (deps.has(id))
135
+ return utils_1.externalModule({ path: id });
136
+ const resolvedPath = yield resolve(path.dirname(importer), id);
137
+ if (resolvedPath.includes('node_modules') || includes.includes(id)) {
138
+ if (utils_1.canBeOptimized(resolvedPath)) {
139
+ deps.set(id, resolvedPath);
140
+ }
141
+ return utils_1.externalModule({ path: id });
142
+ }
143
+ else if (utils_1.canBeScaned(resolvedPath)) {
144
+ return {
145
+ path: resolvedPath,
146
+ namespace: 'vue'
147
+ };
148
+ }
149
+ else if (constant_1.assetsRE.test(resolvedPath)) {
150
+ utils_1.externalModule({ path: id });
151
+ }
152
+ else {
153
+ return {
154
+ path: resolvedPath
155
+ };
156
+ }
157
+ }));
158
+ // catch all
159
+ build.onResolve({ filter: /.*/ }, ({ path: id, importer }) => __awaiter(this, void 0, void 0, function* () {
160
+ const resolvedPath = yield resolve(path.dirname(importer), id);
161
+ const namespace = utils_1.canBeScaned(resolvedPath) ? 'vue' : undefined;
162
+ return {
163
+ path: resolvedPath,
164
+ namespace
165
+ };
166
+ }));
167
+ }
168
+ };
169
+ }
170
+ /**
171
+ * when using TS + (Vue + `<script setup>`) or Svelte, imports may seem
172
+ * unused to esbuild and dropped in the build output, which prevents
173
+ * esbuild from crawling further.
174
+ * the solution is to add `import 'x'` for every source to force
175
+ * esbuild to keep crawling due to potential side effects.
176
+ */
177
+ function extractImportPaths(code) {
178
+ // empty singleline & multiline comments to avoid matching comments
179
+ code = code
180
+ .replace(constant_1.multilineCommentsRE, '/* */')
181
+ .replace(constant_1.singlelineCommentsRE, '');
182
+ let js = '';
183
+ let m;
184
+ while ((m = constant_1.importsRE.exec(code)) != null) {
185
+ // This is necessary to avoid infinite loops with zero-width matches
186
+ if (m.index === constant_1.importsRE.lastIndex) {
187
+ constant_1.importsRE.lastIndex++;
188
+ }
189
+ js += `\nimport ${m[1]}`;
190
+ }
191
+ return js;
192
+ }
193
+ //# sourceMappingURL=scanImports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanImports.js","sourceRoot":"","sources":["../../src/prebundle/scanImports.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.getMeasure = exports.getPrebunbleOptions = exports.commitMeta = exports.getMfHash = exports.formatDepsString = exports.getBundleHash = exports.getHash = exports.isExclude = exports.getDefines = exports.getCacheDir = exports.flattenId = exports.canBeScaned = exports.canBeOptimized = exports.externalModule = exports.getResolve = exports.createResolve = void 0;
13
+ const fs = require("fs-extra");
14
+ const path = require("path");
15
+ const crypto_1 = require("crypto");
16
+ const perf_hooks_1 = require("perf_hooks");
17
+ const enhancedResolve = require("enhanced-resolve");
18
+ const shared_1 = require("@tarojs/shared");
19
+ const helper_1 = require("@tarojs/helper");
20
+ let resolve;
21
+ function createResolve(appPath, resolveOptions) {
22
+ const defaultResolveOptions = {
23
+ conditionNames: ['require', 'import', 'module', 'webpack', 'development', 'browser'],
24
+ aliasFields: ['browser'],
25
+ cache: true,
26
+ mainFiles: ['index'],
27
+ exportsFields: ['exports'],
28
+ roots: appPath
29
+ };
30
+ const resolver = enhancedResolve.create(Object.assign(Object.assign({}, defaultResolveOptions), resolveOptions));
31
+ resolve = function (importer, request) {
32
+ return new Promise((resolve, reject) => {
33
+ resolver({}, importer, request, {}, (err, resolvedPath) => {
34
+ if (err)
35
+ return reject(err);
36
+ resolve(resolvedPath);
37
+ });
38
+ });
39
+ };
40
+ }
41
+ exports.createResolve = createResolve;
42
+ function getResolve() {
43
+ return resolve;
44
+ }
45
+ exports.getResolve = getResolve;
46
+ function externalModule({ path }) {
47
+ return {
48
+ path,
49
+ external: true
50
+ };
51
+ }
52
+ exports.externalModule = externalModule;
53
+ function canBeOptimized(path) {
54
+ return /\.[jt]sx?$/.test(path);
55
+ }
56
+ exports.canBeOptimized = canBeOptimized;
57
+ function canBeScaned(path) {
58
+ return /\.vue/.test(path);
59
+ }
60
+ exports.canBeScaned = canBeScaned;
61
+ function flattenId(id) {
62
+ return id.replace(/(\s*>\s*)/g, '__').replace(/[/.:]/g, '_');
63
+ }
64
+ exports.flattenId = flattenId;
65
+ function getCacheDir(appPath) {
66
+ return path.resolve(appPath, './node_modules/.taro');
67
+ }
68
+ exports.getCacheDir = getCacheDir;
69
+ function getDefines(combination) {
70
+ let defines;
71
+ combination.chain.plugin('definePlugin').tap(args => {
72
+ defines = args[0];
73
+ return args;
74
+ });
75
+ return defines;
76
+ }
77
+ exports.getDefines = getDefines;
78
+ function isExclude(id, excludes) {
79
+ return Boolean(excludes.find(item => {
80
+ const dollarTailRE = /\$$/;
81
+ if (dollarTailRE.test(item)) {
82
+ // 全路径匹配
83
+ item = item.replace(dollarTailRE, '');
84
+ if (item === id)
85
+ return true;
86
+ }
87
+ else {
88
+ if (item === id || id.startsWith(item + '/'))
89
+ return true;
90
+ }
91
+ }));
92
+ }
93
+ exports.isExclude = isExclude;
94
+ function getHash(content) {
95
+ return crypto_1.createHash('sha256').update(content).digest('hex').substring(0, 8);
96
+ }
97
+ exports.getHash = getHash;
98
+ function getBundleHash(deps, combination, cacheDir) {
99
+ return __awaiter(this, void 0, void 0, function* () {
100
+ const appPath = combination.appPath;
101
+ const defines = getDefines(combination);
102
+ const lockfiles = ['package-lock.json', 'yarn.lock', 'pnpm-lock.yaml'];
103
+ const lockfilesContents = yield Promise.all(lockfiles.map(item => {
104
+ return new Promise(resolve => {
105
+ fs.readFile(path.join(appPath, item))
106
+ .then(content => resolve(content.toString()))
107
+ .catch(() => resolve(''));
108
+ });
109
+ }));
110
+ return getHash(formatDepsString(deps) +
111
+ lockfilesContents.join('\n') +
112
+ JSON.stringify(defines) +
113
+ cacheDir);
114
+ });
115
+ }
116
+ exports.getBundleHash = getBundleHash;
117
+ function formatDepsString(deps) {
118
+ const list = Array.from(deps.entries());
119
+ list.sort((a, b) => a[0].localeCompare(b[0]));
120
+ return JSON.stringify(list);
121
+ }
122
+ exports.formatDepsString = formatDepsString;
123
+ function getMfHash(obj) {
124
+ return getHash(JSON.stringify(obj));
125
+ }
126
+ exports.getMfHash = getMfHash;
127
+ function commitMeta(appPath, metadataPath, metadata) {
128
+ return __awaiter(this, void 0, void 0, function* () {
129
+ // Todo: 改为相对路径
130
+ yield fs.writeJSON(metadataPath, metadata, {
131
+ spaces: 2,
132
+ replacer(key, value) {
133
+ if (value instanceof Set) {
134
+ return Array.from(value);
135
+ }
136
+ if (key === 'taroRuntimeBundlePath') {
137
+ return path.relative(appPath, value);
138
+ }
139
+ return value;
140
+ }
141
+ });
142
+ });
143
+ }
144
+ exports.commitMeta = commitMeta;
145
+ function getPrebunbleOptions(combination) {
146
+ const config = combination.config;
147
+ const defaultOptions = {
148
+ enable: process.env.NODE_ENV !== 'production',
149
+ timings: false,
150
+ force: false,
151
+ include: [],
152
+ exclude: []
153
+ };
154
+ if (shared_1.isObject(config.compiler)) {
155
+ return helper_1.recursiveMerge({}, defaultOptions, config.compiler.prebundle);
156
+ }
157
+ return defaultOptions;
158
+ }
159
+ exports.getPrebunbleOptions = getPrebunbleOptions;
160
+ function getMeasure(isLogTiming) {
161
+ return function (name, start) {
162
+ if (isLogTiming) {
163
+ const now = perf_hooks_1.performance.now();
164
+ const duration = now - start;
165
+ console.log(helper_1.chalk.cyan(`${name}: ${Math.round(duration)}ms\n`));
166
+ }
167
+ };
168
+ }
169
+ exports.getMeasure = getMeasure;
170
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/prebundle/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * Modify from https://github.com/webpack/webpack/blob/main/lib/container/ContainerEntryModule.js
5
+ * MIT License http://www.opensource.org/licenses/mit-license.php
6
+ * Author Tobias Koppers @sokra, Zackary Jackson @ScriptedAlchemy, Marais Rossouw @maraisr
7
+ */
8
+ const webpack_1 = require("webpack");
9
+ const ContainerEntryModule = require('webpack/lib/container/ContainerEntryModule');
10
+ const RuntimeGlobals = require('webpack/lib/RuntimeGlobals');
11
+ const Template = require('webpack/lib/Template');
12
+ const { ConcatSource } = require('webpack-sources');
13
+ class TaroContainerEntryModule extends ContainerEntryModule {
14
+ // eslint-disable-next-line no-useless-constructor
15
+ constructor(name, exposes, shareScope) {
16
+ super(name, exposes, shareScope);
17
+ }
18
+ codeGeneration({ moduleGraph, chunkGraph, runtimeTemplate }) {
19
+ const result = super.codeGeneration({ moduleGraph, chunkGraph, runtimeTemplate });
20
+ const originSource = result.sources.get('javascript');
21
+ const newSources = new ConcatSource(originSource);
22
+ const runtimeRequirements = new Set([
23
+ RuntimeGlobals.definePropertyGetters,
24
+ RuntimeGlobals.hasOwnProperty,
25
+ RuntimeGlobals.exports
26
+ ]);
27
+ const getters = [];
28
+ for (const block of this.blocks) {
29
+ const { dependencies } = block;
30
+ const modules = dependencies.map(dependency => {
31
+ const dep = dependency;
32
+ return {
33
+ name: dep.exposedName,
34
+ module: moduleGraph.getModule(dep),
35
+ request: dep.userRequest
36
+ };
37
+ });
38
+ const str = `return ${runtimeTemplate.returningFunction(`(${modules
39
+ .map(({ module, request }) => runtimeTemplate.moduleRaw({
40
+ module,
41
+ chunkGraph,
42
+ request,
43
+ weak: false,
44
+ runtimeRequirements
45
+ }))
46
+ .join(', ')})`)};`;
47
+ getters.push(`${JSON.stringify(modules[0].name)}: ${runtimeTemplate.basicFunction('', str)}`);
48
+ }
49
+ const res = Template.asString([
50
+ '\n',
51
+ 'var taroModuleMap = {',
52
+ Template.indent(getters.join(',\n')),
53
+ '};',
54
+ `var taroGet = ${runtimeTemplate.basicFunction('module', [
55
+ 'return taroModuleMap[module]();'
56
+ ])};`,
57
+ '__webpack_require__.taro(taroGet);'
58
+ ]);
59
+ newSources.add(res);
60
+ result.sources.set('javascript', newSources);
61
+ return result;
62
+ }
63
+ }
64
+ exports.default = TaroContainerEntryModule;
65
+ webpack_1.util.serialization.register(TaroContainerEntryModule, '@tarojs/webpack5-runner/dist/prebundle/TaroContainerEntryModule', 'TaroContainerEntryModule', {
66
+ serialize(obj, context) {
67
+ obj.serialize(context);
68
+ },
69
+ deserialize(context) {
70
+ const { read } = context;
71
+ const obj = new TaroContainerEntryModule(read(), read(), read());
72
+ obj.deserialize(context);
73
+ return obj;
74
+ }
75
+ });
76
+ //# sourceMappingURL=TaroContainerEntryModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaroContainerEntryModule.js","sourceRoot":"","sources":["../../../src/prebundle/webpack/TaroContainerEntryModule.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ /**
13
+ * Modify from https://github.com/webpack/webpack/blob/main/lib/container/ContainerPlugin.js
14
+ * MIT License http://www.opensource.org/licenses/mit-license.php
15
+ * Author Tobias Koppers @sokra, Zackary Jackson @ScriptedAlchemy, Marais Rossouw @maraisr
16
+ */
17
+ const TaroContainerEntryModule_1 = require("./TaroContainerEntryModule");
18
+ const ContainerEntryDependency = require('webpack/lib/container/ContainerEntryDependency');
19
+ const ContainerEntryModuleFactory = require('webpack/lib/container/ContainerEntryModuleFactory');
20
+ const PLUGIN_NAME = 'TaroContainerPlugin';
21
+ class TaroContainerEntryModuleFactory extends ContainerEntryModuleFactory {
22
+ create({ dependencies: [dependency] }, callback) {
23
+ const dep = dependency;
24
+ callback(null, {
25
+ module: new TaroContainerEntryModule_1.default(dep.name, dep.exposes, dep.shareScope)
26
+ });
27
+ }
28
+ }
29
+ /**
30
+ * 劫持 ContainerEntryDependency,把生成的 Module 替换为 TaroContainerEntryModule
31
+ * 目的是修改 remoteEntry.js 的 container module 输出:
32
+ * 1. 插入 taroModuleMap 把异步逻辑改为同步
33
+ * 2. 插入自动注册模块的逻辑
34
+ */
35
+ class TaroContainerPlugin {
36
+ constructor(runtimeRequirements) {
37
+ this.runtimeRequirements = runtimeRequirements;
38
+ }
39
+ apply(compiler) {
40
+ compiler.hooks.thisCompilation.tap({
41
+ name: PLUGIN_NAME,
42
+ stage: 100
43
+ }, compilation => {
44
+ compilation.dependencyFactories.set(ContainerEntryDependency, new TaroContainerEntryModuleFactory());
45
+ /**
46
+ * 收集打包 Remote 应用时使用到的 Webpack runtime 工具函数。
47
+ * 因为小程序中 Remote 应用也使用 Host 应用的 runtime,所以
48
+ * Host 应用的 Webpack runtime 需要增加上 Remote 应用使用到的工具函数。
49
+ */
50
+ compilation.hooks.afterRuntimeRequirements.tap(PLUGIN_NAME, () => {
51
+ const chunkGraphEntries = compilation._getChunkGraphEntries();
52
+ for (const chunk of chunkGraphEntries) {
53
+ if (chunk.name === 'runtime') {
54
+ const chunkGraph = compilation.chunkGraph;
55
+ const cgc = chunkGraph._getChunkGraphChunk(chunk);
56
+ const runtimeRequirements = cgc.runtimeRequirementsInTree;
57
+ runtimeRequirements.forEach(item => this.runtimeRequirements.add(item));
58
+ }
59
+ }
60
+ });
61
+ /**
62
+ * 删除多余的 assets
63
+ * - entry chunk
64
+ * - remote runtime chunk
65
+ */
66
+ compilation.hooks.processAssets.tapAsync(PLUGIN_NAME, (assets, callback) => __awaiter(this, void 0, void 0, function* () {
67
+ delete assets['main.js'];
68
+ delete assets['runtime.js'];
69
+ callback();
70
+ }));
71
+ });
72
+ }
73
+ }
74
+ exports.default = TaroContainerPlugin;
75
+ //# sourceMappingURL=TaroContainerPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaroContainerPlugin.js","sourceRoot":"","sources":["../../../src/prebundle/webpack/TaroContainerPlugin.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA;;;;GAIG;AACH,yEAAiE;AAEjE,MAAM,wBAAwB,GAAG,OAAO,CAAC,gDAAgD,CAAC,CAAA;AAC1F,MAAM,2BAA2B,GAAG,OAAO,CAAC,mDAAmD,CAAC,CAAA;AAEhG,MAAM,WAAW,GAAG,qBAAqB,CAAA;AAEzC,MAAM,+BAAgC,SAAQ,2BAA2B;IACvE,MAAM,CAAE,EAAE,YAAY,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ;QAC9C,MAAM,GAAG,GAAG,UAAU,CAAA;QACtB,QAAQ,CAAC,IAAI,EAAE;YACb,MAAM,EAAE,IAAI,kCAAwB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC;SAC5E,CAAC,CAAA;IACJ,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,mBAAmB;IAGvB,YAAa,mBAAmB;QAC9B,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAA;IAChD,CAAC;IAED,KAAK,CAAE,QAAQ;QACb,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAChC;YACE,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,GAAG;SACX,EACD,WAAW,CAAC,EAAE;YACZ,WAAW,CAAC,mBAAmB,CAAC,GAAG,CACjC,wBAAwB,EACxB,IAAI,+BAA+B,EAAE,CACtC,CAAA;YAED;;;;eAIG;YACH,WAAW,CAAC,KAAK,CAAC,wBAAwB,CAAC,GAAG,CAC5C,WAAW,EACX,GAAG,EAAE;gBACH,MAAM,iBAAiB,GAAI,WAAmB,CAAC,qBAAqB,EAAE,CAAA;gBACtE,KAAK,MAAM,KAAK,IAAI,iBAAiB,EAAE;oBACrC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;wBAC5B,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAA;wBACzC,MAAM,GAAG,GAAI,UAAkB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAA;wBAC1D,MAAM,mBAAmB,GAAG,GAAG,CAAC,yBAAyB,CAAA;wBACzD,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;qBACxE;iBACF;YACH,CAAC,CACF,CAAA;YAED;;;;eAIG;YACH,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CACtC,WAAW,EACX,CAAO,MAAM,EAAE,QAAa,EAAE,EAAE;gBAC9B,OAAO,MAAM,CAAC,SAAS,CAAC,CAAA;gBACxB,OAAO,MAAM,CAAC,YAAY,CAAC,CAAA;gBAC3B,QAAQ,EAAE,CAAA;YACZ,CAAC,CAAA,CACF,CAAA;QACH,CAAC,CACF,CAAA;IACH,CAAC;CACF;AAED,kBAAe,mBAAmB,CAAA"}