@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.
- package/README.md +3 -0
- package/dist/dependencies/TaroSingleEntryDependency.js +18 -0
- package/dist/dependencies/TaroSingleEntryDependency.js.map +1 -0
- package/dist/index.h5.js +224 -0
- package/dist/index.h5.js.map +1 -0
- package/dist/index.mini.js +69 -0
- package/dist/index.mini.js.map +1 -0
- package/dist/loaders/miniTemplateLoader.js +63 -0
- package/dist/loaders/miniTemplateLoader.js.map +1 -0
- package/dist/plugins/BuildNativePlugin.js +124 -0
- package/dist/plugins/BuildNativePlugin.js.map +1 -0
- package/dist/plugins/H5Plugin.js +91 -0
- package/dist/plugins/H5Plugin.js.map +1 -0
- package/dist/plugins/MiniPlugin.js +1027 -0
- package/dist/plugins/MiniPlugin.js.map +1 -0
- package/dist/plugins/MiniSplitChunksPlugin.js +678 -0
- package/dist/plugins/MiniSplitChunksPlugin.js.map +1 -0
- package/dist/plugins/TaroLoadChunksPlugin.js +176 -0
- package/dist/plugins/TaroLoadChunksPlugin.js.map +1 -0
- package/dist/plugins/TaroNormalModule.js +51 -0
- package/dist/plugins/TaroNormalModule.js.map +1 -0
- package/dist/plugins/TaroNormalModulesPlugin.js +63 -0
- package/dist/plugins/TaroNormalModulesPlugin.js.map +1 -0
- package/dist/plugins/TaroSingleEntryPlugin.js +26 -0
- package/dist/plugins/TaroSingleEntryPlugin.js.map +1 -0
- package/dist/plugins/WebpackBarPlugin.js +26 -0
- package/dist/plugins/WebpackBarPlugin.js.map +1 -0
- package/dist/postcss/postcss.h5.js +70 -0
- package/dist/postcss/postcss.h5.js.map +1 -0
- package/dist/postcss/postcss.mini.js +75 -0
- package/dist/postcss/postcss.mini.js.map +1 -0
- package/dist/prebundle/bundle.js +167 -0
- package/dist/prebundle/bundle.js.map +1 -0
- package/dist/prebundle/constant.js +60 -0
- package/dist/prebundle/constant.js.map +1 -0
- package/dist/prebundle/index.js +234 -0
- package/dist/prebundle/index.js.map +1 -0
- package/dist/prebundle/scanImports.js +193 -0
- package/dist/prebundle/scanImports.js.map +1 -0
- package/dist/prebundle/utils.js +170 -0
- package/dist/prebundle/utils.js.map +1 -0
- package/dist/prebundle/webpack/TaroContainerEntryModule.js +76 -0
- package/dist/prebundle/webpack/TaroContainerEntryModule.js.map +1 -0
- package/dist/prebundle/webpack/TaroContainerPlugin.js +75 -0
- package/dist/prebundle/webpack/TaroContainerPlugin.js.map +1 -0
- package/dist/prebundle/webpack/TaroContainerReferencePlugin.js +124 -0
- package/dist/prebundle/webpack/TaroContainerReferencePlugin.js.map +1 -0
- package/dist/prebundle/webpack/index.js +1 -0
- package/dist/prebundle/webpack/index.js.map +1 -0
- package/dist/prerender/prerender.js +228 -0
- package/dist/prerender/prerender.js.map +1 -0
- package/dist/template/comp.js +4 -0
- package/dist/template/component.js +10 -0
- package/dist/template/component.js.map +1 -0
- package/dist/template/custom-wrapper.js +7 -0
- package/dist/template/custom-wrapper.js.map +1 -0
- package/dist/utils/H5AppInstance.js +110 -0
- package/dist/utils/H5AppInstance.js.map +1 -0
- package/dist/utils/index.js +53 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logHelper.js +153 -0
- package/dist/utils/logHelper.js.map +1 -0
- package/dist/utils/types.js +3 -0
- package/dist/utils/types.js.map +1 -0
- package/dist/utils/webpack.js +12 -0
- package/dist/utils/webpack.js.map +1 -0
- package/dist/webpack/BaseConfig.js +155 -0
- package/dist/webpack/BaseConfig.js.map +1 -0
- package/dist/webpack/BuildNativePlugin.js +57 -0
- package/dist/webpack/BuildNativePlugin.js.map +1 -0
- package/dist/webpack/Combination.js +69 -0
- package/dist/webpack/Combination.js.map +1 -0
- package/dist/webpack/H5BaseConfig.js +30 -0
- package/dist/webpack/H5BaseConfig.js.map +1 -0
- package/dist/webpack/H5Combination.js +106 -0
- package/dist/webpack/H5Combination.js.map +1 -0
- package/dist/webpack/H5WebpackModule.js +261 -0
- package/dist/webpack/H5WebpackModule.js.map +1 -0
- package/dist/webpack/H5WebpackPlugin.js +85 -0
- package/dist/webpack/H5WebpackPlugin.js.map +1 -0
- package/dist/webpack/MiniBaseConfig.js +73 -0
- package/dist/webpack/MiniBaseConfig.js.map +1 -0
- package/dist/webpack/MiniCombination.js +115 -0
- package/dist/webpack/MiniCombination.js.map +1 -0
- package/dist/webpack/MiniWebpackModule.js +204 -0
- package/dist/webpack/MiniWebpackModule.js.map +1 -0
- package/dist/webpack/MiniWebpackPlugin.js +154 -0
- package/dist/webpack/MiniWebpackPlugin.js.map +1 -0
- package/dist/webpack/WebpackModule.js +174 -0
- package/dist/webpack/WebpackModule.js.map +1 -0
- package/dist/webpack/WebpackPlugin.js +84 -0
- package/dist/webpack/WebpackPlugin.js.map +1 -0
- package/index.js +7 -0
- 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"}
|