@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.
- package/README.md +3 -0
- package/dist/h5.d.ts +17 -0
- package/dist/h5.js +182 -0
- package/dist/h5.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.js +79 -0
- package/dist/index.js.map +1 -0
- package/dist/mini.d.ts +9 -0
- package/dist/mini.js +241 -0
- package/dist/mini.js.map +1 -0
- package/dist/prebundle/bundle.d.ts +25 -0
- package/dist/prebundle/bundle.js +223 -0
- package/dist/prebundle/bundle.js.map +1 -0
- package/dist/prebundle/index.d.ts +45 -0
- package/dist/prebundle/index.js +131 -0
- package/dist/prebundle/index.js.map +1 -0
- package/dist/prebundle/scanImports.d.ts +10 -0
- package/dist/prebundle/scanImports.js +192 -0
- package/dist/prebundle/scanImports.js.map +1 -0
- package/dist/utils/constant.d.ts +13 -0
- package/dist/utils/constant.js +65 -0
- package/dist/utils/constant.js.map +1 -0
- package/dist/utils/index.d.ts +33 -0
- package/dist/utils/index.js +175 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/path.d.ts +2 -0
- package/dist/utils/path.js +8 -0
- package/dist/utils/path.js.map +1 -0
- package/dist/utils/webpack.d.ts +10 -0
- package/dist/utils/webpack.js +39 -0
- package/dist/utils/webpack.js.map +1 -0
- package/dist/webpack/TaroContainerEntryModule.d.ts +12 -0
- package/dist/webpack/TaroContainerEntryModule.js +78 -0
- package/dist/webpack/TaroContainerEntryModule.js.map +1 -0
- package/dist/webpack/TaroContainerEntryModuleFactory.d.ts +6 -0
- package/dist/webpack/TaroContainerEntryModuleFactory.js +17 -0
- package/dist/webpack/TaroContainerEntryModuleFactory.js.map +1 -0
- package/dist/webpack/TaroContainerPlugin.d.ts +25 -0
- package/dist/webpack/TaroContainerPlugin.js +77 -0
- package/dist/webpack/TaroContainerPlugin.js.map +1 -0
- package/dist/webpack/TaroContainerReferencePlugin.d.ts +26 -0
- package/dist/webpack/TaroContainerReferencePlugin.js +187 -0
- package/dist/webpack/TaroContainerReferencePlugin.js.map +1 -0
- package/dist/webpack/TaroModuleFederationPlugin.d.ts +21 -0
- package/dist/webpack/TaroModuleFederationPlugin.js +75 -0
- package/dist/webpack/TaroModuleFederationPlugin.js.map +1 -0
- package/dist/webpack/TaroRemoteRuntimeModule.d.ts +14 -0
- package/dist/webpack/TaroRemoteRuntimeModule.js +117 -0
- package/dist/webpack/TaroRemoteRuntimeModule.js.map +1 -0
- package/dist/webpack/index.d.ts +0 -0
- package/dist/webpack/index.js +1 -0
- package/dist/webpack/index.js.map +1 -0
- 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,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 {};
|