@tarojs/webpack5-prebundle 3.5.0-beta.3

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 (53) hide show
  1. package/README.md +3 -0
  2. package/dist/h5.d.ts +17 -0
  3. package/dist/h5.js +182 -0
  4. package/dist/h5.js.map +1 -0
  5. package/dist/index.d.ts +27 -0
  6. package/dist/index.js +79 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/mini.d.ts +9 -0
  9. package/dist/mini.js +241 -0
  10. package/dist/mini.js.map +1 -0
  11. package/dist/prebundle/bundle.d.ts +25 -0
  12. package/dist/prebundle/bundle.js +223 -0
  13. package/dist/prebundle/bundle.js.map +1 -0
  14. package/dist/prebundle/index.d.ts +45 -0
  15. package/dist/prebundle/index.js +131 -0
  16. package/dist/prebundle/index.js.map +1 -0
  17. package/dist/prebundle/scanImports.d.ts +10 -0
  18. package/dist/prebundle/scanImports.js +192 -0
  19. package/dist/prebundle/scanImports.js.map +1 -0
  20. package/dist/utils/constant.d.ts +13 -0
  21. package/dist/utils/constant.js +65 -0
  22. package/dist/utils/constant.js.map +1 -0
  23. package/dist/utils/index.d.ts +33 -0
  24. package/dist/utils/index.js +175 -0
  25. package/dist/utils/index.js.map +1 -0
  26. package/dist/utils/path.d.ts +2 -0
  27. package/dist/utils/path.js +8 -0
  28. package/dist/utils/path.js.map +1 -0
  29. package/dist/utils/webpack.d.ts +10 -0
  30. package/dist/utils/webpack.js +39 -0
  31. package/dist/utils/webpack.js.map +1 -0
  32. package/dist/webpack/TaroContainerEntryModule.d.ts +12 -0
  33. package/dist/webpack/TaroContainerEntryModule.js +78 -0
  34. package/dist/webpack/TaroContainerEntryModule.js.map +1 -0
  35. package/dist/webpack/TaroContainerEntryModuleFactory.d.ts +6 -0
  36. package/dist/webpack/TaroContainerEntryModuleFactory.js +17 -0
  37. package/dist/webpack/TaroContainerEntryModuleFactory.js.map +1 -0
  38. package/dist/webpack/TaroContainerPlugin.d.ts +25 -0
  39. package/dist/webpack/TaroContainerPlugin.js +77 -0
  40. package/dist/webpack/TaroContainerPlugin.js.map +1 -0
  41. package/dist/webpack/TaroContainerReferencePlugin.d.ts +26 -0
  42. package/dist/webpack/TaroContainerReferencePlugin.js +187 -0
  43. package/dist/webpack/TaroContainerReferencePlugin.js.map +1 -0
  44. package/dist/webpack/TaroModuleFederationPlugin.d.ts +21 -0
  45. package/dist/webpack/TaroModuleFederationPlugin.js +75 -0
  46. package/dist/webpack/TaroModuleFederationPlugin.js.map +1 -0
  47. package/dist/webpack/TaroRemoteRuntimeModule.d.ts +14 -0
  48. package/dist/webpack/TaroRemoteRuntimeModule.js +117 -0
  49. package/dist/webpack/TaroRemoteRuntimeModule.js.map +1 -0
  50. package/dist/webpack/index.d.ts +0 -0
  51. package/dist/webpack/index.js +1 -0
  52. package/dist/webpack/index.js.map +1 -0
  53. package/package.json +48 -0
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultEsbuildLoader = exports.MF_NAME = exports.importsRE = exports.singlelineCommentsRE = exports.multilineCommentsRE = exports.langRE = exports.scriptRE = exports.commentRE = exports.assetsRE = exports.virtualModuleRE = exports.virtualModulePrefix = void 0;
4
+ const KNOWN_ASSET_TYPES = [
5
+ // css
6
+ 'css',
7
+ 'less',
8
+ 'sass',
9
+ 'scss',
10
+ 'styl',
11
+ 'stylus',
12
+ 'pcss',
13
+ 'postcss',
14
+ // json
15
+ 'json',
16
+ // images
17
+ 'png',
18
+ 'jpe?g',
19
+ 'gif',
20
+ 'svg',
21
+ 'ico',
22
+ 'webp',
23
+ 'avif',
24
+ // media
25
+ 'mp4',
26
+ 'webm',
27
+ 'ogg',
28
+ 'mp3',
29
+ 'wav',
30
+ 'flac',
31
+ 'aac',
32
+ // fonts
33
+ 'woff2?',
34
+ 'eot',
35
+ 'ttf',
36
+ 'otf',
37
+ // other
38
+ 'wasm',
39
+ 'webmanifest',
40
+ 'pdf',
41
+ 'txt'
42
+ ];
43
+ exports.virtualModulePrefix = 'virtual-module:';
44
+ exports.virtualModuleRE = new RegExp(`^${exports.virtualModulePrefix}`);
45
+ exports.assetsRE = new RegExp(`\\.(${KNOWN_ASSET_TYPES.join('|')})$`);
46
+ exports.commentRE = /<!--(.|[\r\n])*?-->/;
47
+ exports.scriptRE = /(<script\b(?:\s[^>]*>|>))(.*?)<\/script>/gims;
48
+ exports.langRE = /\blang\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s'">]+))/im;
49
+ exports.multilineCommentsRE = /\/\*(.|[\r\n])*?\*\//gm;
50
+ exports.singlelineCommentsRE = /\/\/.*/g;
51
+ // A simple regex to detect import sources. This is only used on
52
+ // <script lang="ts"> blocks in vue (setup only) or svelte files, since
53
+ // seemingly unused imports are dropped by esbuild when transpiling TS which
54
+ // prevents it from crawling further.
55
+ // We can't use es-module-lexer because it can't handle TS, and don't want to
56
+ // use Acorn because it's slow. Luckily this doesn't have to be bullet proof
57
+ // since even missed imports can be caught at runtime, and false positives will
58
+ // simply be ignored.
59
+ exports.importsRE = /(?<!\/\/.*)(?<=^|;|\*\/)\s*import(?!\s+type)(?:[\w*{}\n\r\t, ]+from\s*)?\s*("[^"]+"|'[^']+')\s*(?=$|;|\/\/|\/\*)/gm;
60
+ exports.MF_NAME = 'taro_app_library';
61
+ exports.defaultEsbuildLoader = {
62
+ '.js': 'jsx',
63
+ '.ts': 'tsx'
64
+ };
65
+ //# sourceMappingURL=constant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constant.js","sourceRoot":"","sources":["../../src/utils/constant.ts"],"names":[],"mappings":";;;AAEA,MAAM,iBAAiB,GAAG;IACxB,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,QAAQ;IACR,MAAM;IACN,SAAS;IAET,OAAO;IACP,MAAM;IAEN,SAAS;IACT,KAAK;IACL,OAAO;IACP,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IAEN,QAAQ;IACR,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IAEL,QAAQ;IACR,QAAQ;IACR,KAAK;IACL,KAAK;IACL,KAAK;IAEL,QAAQ;IACR,MAAM;IACN,aAAa;IACb,KAAK;IACL,KAAK;CACN,CAAA;AAEY,QAAA,mBAAmB,GAAG,iBAAiB,CAAA;AACvC,QAAA,eAAe,GAAG,IAAI,MAAM,CAAC,IAAI,2BAAmB,EAAE,CAAC,CAAA;AAEvD,QAAA,QAAQ,GAAG,IAAI,MAAM,CAAC,OAAO,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AAE7D,QAAA,SAAS,GAAG,qBAAqB,CAAA;AACjC,QAAA,QAAQ,GAAG,8CAA8C,CAAA;AACzD,QAAA,MAAM,GAAG,oDAAoD,CAAA;AAC7D,QAAA,mBAAmB,GAAG,wBAAwB,CAAA;AAC9C,QAAA,oBAAoB,GAAG,SAAS,CAAA;AAE7C,gEAAgE;AAChE,uEAAuE;AACvE,4EAA4E;AAC5E,qCAAqC;AACrC,6EAA6E;AAC7E,4EAA4E;AAC5E,+EAA+E;AAC/E,qBAAqB;AACR,QAAA,SAAS,GACpB,oHAAoH,CAAA;AAIzG,QAAA,OAAO,GAAG,kBAAkB,CAAA;AAE5B,QAAA,oBAAoB,GAA2B;IAC1D,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;CACb,CAAA"}
@@ -0,0 +1,33 @@
1
+ import Chain from 'webpack-chain';
2
+ import type { CollectedDeps } from './constant';
3
+ export interface Metadata {
4
+ bundleHash?: string;
5
+ mfHash?: string;
6
+ taroRuntimeBundlePath?: string;
7
+ runtimeRequirements?: Set<string>;
8
+ remoteAssets?: {
9
+ name: string;
10
+ }[];
11
+ }
12
+ export declare function createResolve(appPath: string, resolveOptions: any): void;
13
+ export declare function getResolve(): (importer: string, request: string) => Promise<string>;
14
+ export declare function externalModule({ path }: {
15
+ path: string;
16
+ }): {
17
+ path: string;
18
+ external: boolean;
19
+ };
20
+ export declare function flattenId(id: string): string;
21
+ export declare function getCacheDir(appPath: string, env?: string): string;
22
+ export declare function getDefines(chain: Chain): any;
23
+ export declare function isExclude(id: string, excludes: (string | RegExp)[]): boolean;
24
+ export declare function isOptimizeIncluded(path: string): boolean;
25
+ export declare function isScanIncluded(path: string): boolean;
26
+ export declare function getHash(content: string): string;
27
+ export declare function getBundleHash(appPath: string, deps: CollectedDeps, chain: Chain, cacheDir: string): Promise<string>;
28
+ export declare function formatDepsString(deps: CollectedDeps): string;
29
+ export declare function getMfHash(obj: Record<string, any>): string;
30
+ export declare function commitMeta(appPath: string, metadataPath: string, metadata: Metadata): Promise<void>;
31
+ export declare function getMeasure(isLogTiming?: boolean): (name: string, start: number) => void;
32
+ export * from './path';
33
+ export * from './webpack';
@@ -0,0 +1,175 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
17
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
18
+ return new (P || (P = Promise))(function (resolve, reject) {
19
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
20
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
21
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
22
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
23
+ });
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.getMeasure = exports.commitMeta = exports.getMfHash = exports.formatDepsString = exports.getBundleHash = exports.getHash = exports.isScanIncluded = exports.isOptimizeIncluded = exports.isExclude = exports.getDefines = exports.getCacheDir = exports.flattenId = exports.externalModule = exports.getResolve = exports.createResolve = void 0;
30
+ const helper_1 = require("@tarojs/helper");
31
+ const crypto_1 = require("crypto");
32
+ const enhanced_resolve_1 = __importDefault(require("enhanced-resolve"));
33
+ const fs_extra_1 = __importDefault(require("fs-extra"));
34
+ const path_1 = __importDefault(require("path"));
35
+ const perf_hooks_1 = require("perf_hooks");
36
+ let resolve;
37
+ function createResolve(appPath, resolveOptions) {
38
+ const defaultResolveOptions = {
39
+ conditionNames: ['require', 'import', 'module', 'webpack', 'development', 'browser'],
40
+ aliasFields: ['browser'],
41
+ cache: true,
42
+ mainFiles: ['index'],
43
+ exportsFields: ['exports'],
44
+ roots: appPath
45
+ };
46
+ const resolver = enhanced_resolve_1.default.create(Object.assign(Object.assign({}, defaultResolveOptions), resolveOptions));
47
+ resolve = function (importer, request) {
48
+ return new Promise((resolve, reject) => {
49
+ resolver({}, importer, request, {}, (err, resolvedPath) => {
50
+ if (err)
51
+ return reject(err);
52
+ resolve(resolvedPath);
53
+ });
54
+ });
55
+ };
56
+ }
57
+ exports.createResolve = createResolve;
58
+ function getResolve() {
59
+ return resolve;
60
+ }
61
+ exports.getResolve = getResolve;
62
+ function externalModule({ path }) {
63
+ return {
64
+ path,
65
+ external: true
66
+ };
67
+ }
68
+ exports.externalModule = externalModule;
69
+ function flattenId(id) {
70
+ return id.replace(/(\s*>\s*)/g, '__').replace(/[/.:]/g, '_');
71
+ }
72
+ exports.flattenId = flattenId;
73
+ function getCacheDir(appPath, env = '') {
74
+ return path_1.default.resolve(appPath, './node_modules/.taro', env);
75
+ }
76
+ exports.getCacheDir = getCacheDir;
77
+ function getDefines(chain) {
78
+ let defines;
79
+ chain.plugin('definePlugin').tap(args => {
80
+ defines = args[0];
81
+ return args;
82
+ });
83
+ return defines;
84
+ }
85
+ exports.getDefines = getDefines;
86
+ function isExclude(id, excludes) {
87
+ return Boolean(excludes.find(item => {
88
+ const dollarTailRE = /\$$/;
89
+ if (item instanceof RegExp) {
90
+ return item.test(id);
91
+ }
92
+ else if (dollarTailRE.test(item)) {
93
+ // 全路径匹配
94
+ item = item.replace(dollarTailRE, '');
95
+ if (item === id)
96
+ return true;
97
+ }
98
+ else {
99
+ if (item === id || id.startsWith(item + '/'))
100
+ return true;
101
+ }
102
+ }));
103
+ }
104
+ exports.isExclude = isExclude;
105
+ function isOptimizeIncluded(path) {
106
+ return /\.[jt]sx?$/.test(path);
107
+ }
108
+ exports.isOptimizeIncluded = isOptimizeIncluded;
109
+ function isScanIncluded(path) {
110
+ return /\.vue/.test(path);
111
+ }
112
+ exports.isScanIncluded = isScanIncluded;
113
+ function getHash(content) {
114
+ return (0, crypto_1.createHash)('sha256').update(content).digest('hex').substring(0, 8);
115
+ }
116
+ exports.getHash = getHash;
117
+ function getBundleHash(appPath, deps, chain, cacheDir) {
118
+ return __awaiter(this, void 0, void 0, function* () {
119
+ const defines = getDefines(chain);
120
+ const lockfiles = ['package-lock.json', 'yarn.lock', 'pnpm-lock.yaml'];
121
+ const lockfilesContents = yield Promise.all(lockfiles.map(item => {
122
+ return new Promise(resolve => {
123
+ fs_extra_1.default.readFile(path_1.default.join(appPath, item))
124
+ .then(content => resolve(content.toString()))
125
+ .catch(() => resolve(''));
126
+ });
127
+ }));
128
+ return getHash(formatDepsString(deps) +
129
+ lockfilesContents.join('\n') +
130
+ JSON.stringify(defines) +
131
+ cacheDir);
132
+ });
133
+ }
134
+ exports.getBundleHash = getBundleHash;
135
+ function formatDepsString(deps) {
136
+ const list = Array.from(deps.entries());
137
+ list.sort((a, b) => a[0].localeCompare(b[0]));
138
+ return JSON.stringify(list);
139
+ }
140
+ exports.formatDepsString = formatDepsString;
141
+ function getMfHash(obj) {
142
+ return getHash(JSON.stringify(obj));
143
+ }
144
+ exports.getMfHash = getMfHash;
145
+ function commitMeta(appPath, metadataPath, metadata) {
146
+ return __awaiter(this, void 0, void 0, function* () {
147
+ // Todo: 改为相对路径
148
+ yield fs_extra_1.default.writeJSON(metadataPath, metadata, {
149
+ spaces: 2,
150
+ replacer(key, value) {
151
+ if (value instanceof Set) {
152
+ return Array.from(value);
153
+ }
154
+ if (key === 'taroRuntimeBundlePath') {
155
+ return path_1.default.relative(appPath, value);
156
+ }
157
+ return value;
158
+ }
159
+ });
160
+ });
161
+ }
162
+ exports.commitMeta = commitMeta;
163
+ function getMeasure(isLogTiming) {
164
+ return function (name, start) {
165
+ if (isLogTiming) {
166
+ const now = perf_hooks_1.performance.now();
167
+ const duration = now - start;
168
+ console.log(helper_1.chalk.cyan(`${name}: ${Math.round(duration)}ms\n`));
169
+ }
170
+ };
171
+ }
172
+ exports.getMeasure = getMeasure;
173
+ __exportStar(require("./path"), exports);
174
+ __exportStar(require("./webpack"), exports);
175
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const addLeadingSlash: (url?: string) => string;
2
+ export declare const addTrailingSlash: (url?: string) => string;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addTrailingSlash = exports.addLeadingSlash = void 0;
4
+ const addLeadingSlash = (url = '') => (url.charAt(0) === '/' ? url : '/' + url);
5
+ exports.addLeadingSlash = addLeadingSlash;
6
+ const addTrailingSlash = (url = '') => (url.charAt(url.length - 1) === '/' ? url : url + '/');
7
+ exports.addTrailingSlash = addTrailingSlash;
8
+ //# sourceMappingURL=path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/utils/path.ts"],"names":[],"mappings":";;;AAAO,MAAM,eAAe,GAAG,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAA;AAAzE,QAAA,eAAe,mBAA0D;AAC/E,MAAM,gBAAgB,GAAG,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAA;AAAvF,QAAA,gBAAgB,oBAAuE"}
@@ -0,0 +1,10 @@
1
+ import { Chunk, Compilation } from 'webpack';
2
+ import { ConcatSource, Source } from 'webpack-sources';
3
+ /**
4
+ * 在文本头部加入一些 require 语句
5
+ */
6
+ export declare function addRequireToSource(id: string, modules: Source, commonChunks: (Chunk | {
7
+ name: string;
8
+ })[]): ConcatSource;
9
+ export declare function getChunkEntryModule(compilation: Compilation, chunk: Chunk): import("webpack").Module | undefined;
10
+ export declare function getChunkIdOrName(chunk: Chunk): string;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getChunkIdOrName = exports.getChunkEntryModule = exports.addRequireToSource = void 0;
7
+ const helper_1 = require("@tarojs/helper");
8
+ const path_1 = __importDefault(require("path"));
9
+ const webpack_sources_1 = require("webpack-sources");
10
+ /**
11
+ * 在文本头部加入一些 require 语句
12
+ */
13
+ function addRequireToSource(id, modules, commonChunks) {
14
+ const source = new webpack_sources_1.ConcatSource();
15
+ commonChunks.forEach(chunkItem => {
16
+ source.add(`require(${JSON.stringify((0, helper_1.promoteRelativePath)(path_1.default.relative(id, chunkItem.name)))});\n`);
17
+ });
18
+ source.add('\n');
19
+ source.add(modules);
20
+ source.add(';');
21
+ return source;
22
+ }
23
+ exports.addRequireToSource = addRequireToSource;
24
+ function getChunkEntryModule(compilation, chunk) {
25
+ const chunkGraph = compilation.chunkGraph;
26
+ const entryModules = Array.from(chunkGraph.getChunkEntryModulesIterable(chunk));
27
+ if (entryModules.length) {
28
+ return entryModules[0];
29
+ }
30
+ }
31
+ exports.getChunkEntryModule = getChunkEntryModule;
32
+ function getChunkIdOrName(chunk) {
33
+ if (typeof chunk.id === 'string') {
34
+ return chunk.id;
35
+ }
36
+ return chunk.name;
37
+ }
38
+ exports.getChunkIdOrName = getChunkIdOrName;
39
+ //# sourceMappingURL=webpack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webpack.js","sourceRoot":"","sources":["../../src/utils/webpack.ts"],"names":[],"mappings":";;;;;;AAAA,2CAAoD;AACpD,gDAAuB;AAEvB,qDAAsD;AAEtD;;GAEG;AACH,SAAgB,kBAAkB,CAAE,EAAU,EAAE,OAAe,EAAE,YAA0C;IACzG,MAAM,MAAM,GAAG,IAAI,8BAAY,EAAE,CAAA;IACjC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;QAC/B,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,IAAA,4BAAmB,EAAC,cAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IACrG,CAAC,CAAC,CAAA;IACF,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAChB,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACnB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACf,OAAO,MAAM,CAAA;AACf,CAAC;AATD,gDASC;AAED,SAAgB,mBAAmB,CAAE,WAAwB,EAAE,KAAY;IACzE,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAA;IACzC,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,CAAA;IAC/E,IAAI,YAAY,CAAC,MAAM,EAAE;QACvB,OAAO,YAAY,CAAC,CAAC,CAAC,CAAA;KACvB;AACH,CAAC;AAND,kDAMC;AAED,SAAgB,gBAAgB,CAAE,KAAY;IAC5C,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,EAAE;QAChC,OAAO,KAAK,CAAC,EAAE,CAAA;KAChB;IACD,OAAO,KAAK,CAAC,IAAI,CAAA;AACnB,CAAC;AALD,4CAKC"}
@@ -0,0 +1,12 @@
1
+ import ContainerPlugin from 'webpack/lib/container/ContainerPlugin';
2
+ declare const ContainerEntryModule: any;
3
+ declare type Exposes = ConstructorParameters<typeof ContainerPlugin>[0]['exposes'];
4
+ export default class TaroContainerEntryModule extends ContainerEntryModule {
5
+ constructor(name: string, exposes: Exposes, shareScope: string);
6
+ codeGeneration({ moduleGraph, chunkGraph, runtimeTemplate }: {
7
+ moduleGraph: any;
8
+ chunkGraph: any;
9
+ runtimeTemplate: any;
10
+ }): any;
11
+ }
12
+ export {};
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ /**
7
+ * Modify from https://github.com/webpack/webpack/blob/main/lib/container/ContainerEntryModule.js
8
+ * MIT License http://www.opensource.org/licenses/mit-license.php
9
+ * Author Tobias Koppers @sokra, Zackary Jackson @ScriptedAlchemy, Marais Rossouw @maraisr
10
+ */
11
+ const webpack_1 = __importDefault(require("webpack"));
12
+ const webpack_sources_1 = require("webpack-sources");
13
+ const { Template, RuntimeGlobals } = webpack_1.default;
14
+ const ContainerEntryModule = require('webpack/lib/container/ContainerEntryModule');
15
+ class TaroContainerEntryModule extends ContainerEntryModule {
16
+ // eslint-disable-next-line no-useless-constructor
17
+ constructor(name, exposes, shareScope) {
18
+ super(name, exposes, shareScope);
19
+ }
20
+ codeGeneration({ moduleGraph, chunkGraph, runtimeTemplate }) {
21
+ const result = super.codeGeneration({ moduleGraph, chunkGraph, runtimeTemplate });
22
+ const originSource = result.sources.get('javascript');
23
+ const newSources = new webpack_sources_1.ConcatSource(originSource);
24
+ const runtimeRequirements = new Set([
25
+ RuntimeGlobals.definePropertyGetters,
26
+ RuntimeGlobals.hasOwnProperty,
27
+ RuntimeGlobals.exports
28
+ ]);
29
+ const getters = [];
30
+ for (const block of this.blocks) {
31
+ const { dependencies } = block;
32
+ const modules = dependencies.map(dependency => {
33
+ const dep = dependency;
34
+ return {
35
+ name: dep.exposedName,
36
+ module: moduleGraph.getModule(dep),
37
+ request: dep.userRequest
38
+ };
39
+ });
40
+ const str = `return ${runtimeTemplate.returningFunction(`(${modules
41
+ .map(({ module, request }) => runtimeTemplate.moduleRaw({
42
+ module,
43
+ chunkGraph,
44
+ request,
45
+ weak: false,
46
+ runtimeRequirements
47
+ }))
48
+ .join(', ')})`)};`;
49
+ getters.push(`${JSON.stringify(modules[0].name)}: ${runtimeTemplate.basicFunction('', str)}`);
50
+ }
51
+ const res = Template.asString([
52
+ '\n',
53
+ 'var taroModuleMap = {',
54
+ Template.indent(getters.join(',\n')),
55
+ '};',
56
+ `var taroGet = ${runtimeTemplate.basicFunction('module', [
57
+ 'return taroModuleMap[module]();'
58
+ ])};`,
59
+ '__webpack_require__.taro(taroGet);'
60
+ ]);
61
+ newSources.add(res);
62
+ result.sources.set('javascript', newSources);
63
+ return result;
64
+ }
65
+ }
66
+ exports.default = TaroContainerEntryModule;
67
+ webpack_1.default.util.serialization.register(TaroContainerEntryModule, '@tarojs/webpack5-runner/dist/prebundle/TaroContainerEntryModule', 'TaroContainerEntryModule', {
68
+ serialize(obj, context) {
69
+ obj.serialize(context);
70
+ },
71
+ deserialize(context) {
72
+ const { read } = context;
73
+ const obj = new TaroContainerEntryModule(read(), read(), read());
74
+ obj.deserialize(context);
75
+ return obj;
76
+ }
77
+ });
78
+ //# sourceMappingURL=TaroContainerEntryModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaroContainerEntryModule.js","sourceRoot":"","sources":["../../src/webpack/TaroContainerEntryModule.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Compilation } from 'webpack';
2
+ declare const ContainerEntryModuleFactory: any;
3
+ export default class TaroContainerEntryModuleFactory extends ContainerEntryModuleFactory implements MapValue<Compilation['dependencyFactories']> {
4
+ create(data: any, callback: any): void;
5
+ }
6
+ export {};
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const TaroContainerEntryModule_1 = __importDefault(require("./TaroContainerEntryModule"));
7
+ const ContainerEntryModuleFactory = require('webpack/lib/container/ContainerEntryModuleFactory');
8
+ class TaroContainerEntryModuleFactory extends ContainerEntryModuleFactory {
9
+ create(data, callback) {
10
+ const dep = data === null || data === void 0 ? void 0 : data.dependencies[0];
11
+ callback(null, {
12
+ module: new TaroContainerEntryModule_1.default(dep.name, dep.exposes, dep.shareScope)
13
+ });
14
+ }
15
+ }
16
+ exports.default = TaroContainerEntryModuleFactory;
17
+ //# sourceMappingURL=TaroContainerEntryModuleFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaroContainerEntryModuleFactory.js","sourceRoot":"","sources":["../../src/webpack/TaroContainerEntryModuleFactory.ts"],"names":[],"mappings":";;;;;AAEA,0FAAiE;AAEjE,MAAM,2BAA2B,GAAG,OAAO,CAAC,mDAAmD,CAAC,CAAA;AAEhG,MAAqB,+BAAgC,SAAQ,2BAA2B;IACtF,MAAM,CAAE,IAAI,EAAE,QAAQ;QACpB,MAAM,GAAG,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAY,CAAC,CAAC,CAAC,CAAA;QACjC,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;AAPD,kDAOC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Modify from https://github.com/webpack/webpack/blob/main/lib/container/ContainerPlugin.js
3
+ * MIT License http://www.opensource.org/licenses/mit-license.php
4
+ * Author Tobias Koppers @sokra, Zackary Jackson @ScriptedAlchemy, Marais Rossouw @maraisr
5
+ */
6
+ import { Compiler } from 'webpack';
7
+ import ContainerPlugin from 'webpack/lib/container/ContainerPlugin';
8
+ interface IParams {
9
+ env: string;
10
+ runtimeRequirements?: Set<string>;
11
+ }
12
+ declare class TaroContainerPlugin extends ContainerPlugin {
13
+ private params;
14
+ runtimeRequirements: Exclude<IParams['runtimeRequirements'], undefined>;
15
+ constructor(options: any, params: IParams);
16
+ apply(compiler: Compiler): void;
17
+ /**
18
+ * 劫持 ContainerEntryDependency,把生成的 Module 替换为 TaroContainerEntryModule
19
+ * 目的是修改 remoteEntry.js 的 container module 输出:
20
+ * 1. 插入 taroModuleMap 把异步逻辑改为同步
21
+ * 2. 插入自动注册模块的逻辑
22
+ */
23
+ applyMiniApp(compiler: Compiler): void;
24
+ }
25
+ export default TaroContainerPlugin;
@@ -0,0 +1,77 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const ContainerPlugin_1 = __importDefault(require("webpack/lib/container/ContainerPlugin"));
16
+ const TaroContainerEntryModuleFactory_1 = __importDefault(require("./TaroContainerEntryModuleFactory"));
17
+ const ContainerEntryDependency = require('webpack/lib/container/ContainerEntryDependency');
18
+ const PLUGIN_NAME = 'TaroContainerPlugin';
19
+ class TaroContainerPlugin extends ContainerPlugin_1.default {
20
+ constructor(options, params) {
21
+ super(options);
22
+ this.params = params;
23
+ this.runtimeRequirements = params.runtimeRequirements || new Set();
24
+ }
25
+ apply(compiler) {
26
+ switch (this.params.env) {
27
+ case 'h5':
28
+ super.apply(compiler);
29
+ break;
30
+ default:
31
+ this.applyMiniApp(compiler);
32
+ }
33
+ }
34
+ /**
35
+ * 劫持 ContainerEntryDependency,把生成的 Module 替换为 TaroContainerEntryModule
36
+ * 目的是修改 remoteEntry.js 的 container module 输出:
37
+ * 1. 插入 taroModuleMap 把异步逻辑改为同步
38
+ * 2. 插入自动注册模块的逻辑
39
+ */
40
+ applyMiniApp(compiler) {
41
+ super.apply(compiler);
42
+ compiler.hooks.thisCompilation.tap({
43
+ name: PLUGIN_NAME,
44
+ stage: 100
45
+ }, compilation => {
46
+ compilation.dependencyFactories.set(ContainerEntryDependency, new TaroContainerEntryModuleFactory_1.default());
47
+ /**
48
+ * 收集打包 Remote 应用时使用到的 Webpack runtime 工具函数。
49
+ * 因为小程序中 Remote 应用也使用 Host 应用的 runtime,所以
50
+ * Host 应用的 Webpack runtime 需要增加上 Remote 应用使用到的工具函数。
51
+ */
52
+ compilation.hooks.afterRuntimeRequirements.tap(PLUGIN_NAME, () => {
53
+ const chunkGraphEntries = compilation._getChunkGraphEntries();
54
+ for (const chunk of chunkGraphEntries) {
55
+ if (chunk.name === 'runtime') {
56
+ const chunkGraph = compilation.chunkGraph;
57
+ const cgc = chunkGraph._getChunkGraphChunk(chunk);
58
+ const runtimeRequirements = cgc.runtimeRequirementsInTree;
59
+ runtimeRequirements.forEach(item => this.runtimeRequirements.add(item));
60
+ }
61
+ }
62
+ });
63
+ /**
64
+ * 删除多余的 assets
65
+ * - entry chunk
66
+ * - remote runtime chunk
67
+ */
68
+ compilation.hooks.processAssets.tapAsync(PLUGIN_NAME, (assets, callback) => __awaiter(this, void 0, void 0, function* () {
69
+ delete assets['main.js'];
70
+ delete assets['runtime.js'];
71
+ callback();
72
+ }));
73
+ });
74
+ }
75
+ }
76
+ exports.default = TaroContainerPlugin;
77
+ //# sourceMappingURL=TaroContainerPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaroContainerPlugin.js","sourceRoot":"","sources":["../../src/webpack/TaroContainerPlugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAMA,4FAAmE;AAEnE,wGAA+E;AAE/E,MAAM,wBAAwB,GAAG,OAAO,CAAC,gDAAgD,CAAC,CAAA;AAE1F,MAAM,WAAW,GAAG,qBAAqB,CAAA;AAOzC,MAAM,mBAAoB,SAAQ,yBAAe;IAG/C,YAAa,OAAO,EAAU,MAAe;QAC3C,KAAK,CAAC,OAAO,CAAC,CAAA;QADc,WAAM,GAAN,MAAM,CAAS;QAE3C,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,IAAI,IAAI,GAAG,EAAE,CAAA;IACpE,CAAC;IAED,KAAK,CAAE,QAAkB;QACvB,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YACvB,KAAK,IAAI;gBACP,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;gBACrB,MAAK;YACP;gBACE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;SAC9B;IACH,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAE,QAAkB;QAC9B,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QACrB,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,yCAA+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"}
@@ -0,0 +1,26 @@
1
+ import { Compiler } from 'webpack';
2
+ import ContainerReferencePlugin from 'webpack/lib/container/ContainerReferencePlugin';
3
+ import type { ContainerReferencePluginOptions } from 'webpack/types';
4
+ import { CollectedDeps } from '../utils/constant';
5
+ declare type MFOptions = Partial<ContainerReferencePluginOptions>;
6
+ interface IParams {
7
+ deps: CollectedDeps;
8
+ env: string;
9
+ remoteAssets?: Record<'name', string>[];
10
+ runtimeRequirements: Set<string>;
11
+ }
12
+ export default class TaroContainerReferencePlugin extends ContainerReferencePlugin {
13
+ private params;
14
+ private deps;
15
+ private remoteAssets;
16
+ private remoteName;
17
+ private remoteConfig;
18
+ private runtimeRequirements;
19
+ protected _remoteType?: ContainerReferencePluginOptions['remoteType'];
20
+ protected _remotes: any;
21
+ constructor(options: MFOptions, params: IParams);
22
+ apply(compiler: Compiler): void;
23
+ applyWebApp(compiler: Compiler): void;
24
+ applyMiniApp(compiler: Compiler): void;
25
+ }
26
+ export {};