@tarojs/webpack5-runner 3.5.0-beta.0 → 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 (52) hide show
  1. package/dist/index.h5.js +94 -92
  2. package/dist/index.h5.js.map +1 -1
  3. package/dist/index.mini.js +11 -2
  4. package/dist/index.mini.js.map +1 -1
  5. package/dist/plugins/BuildNativePlugin.js +4 -5
  6. package/dist/plugins/BuildNativePlugin.js.map +1 -1
  7. package/dist/plugins/H5Plugin.js +23 -12
  8. package/dist/plugins/H5Plugin.js.map +1 -1
  9. package/dist/plugins/MiniPlugin.js +34 -11
  10. package/dist/plugins/MiniPlugin.js.map +1 -1
  11. package/dist/plugins/MiniSplitChunksPlugin.js.map +1 -1
  12. package/dist/plugins/TaroLoadChunksPlugin.js +13 -34
  13. package/dist/plugins/TaroLoadChunksPlugin.js.map +1 -1
  14. package/dist/plugins/TaroNormalModulesPlugin.js.map +1 -1
  15. package/dist/postcss/postcss.h5.js +44 -24
  16. package/dist/postcss/postcss.h5.js.map +1 -1
  17. package/dist/prerender/prerender.js.map +1 -1
  18. package/dist/utils/H5AppInstance.js.map +1 -1
  19. package/dist/utils/webpack.js +28 -1
  20. package/dist/utils/webpack.js.map +1 -1
  21. package/dist/webpack/BaseConfig.js.map +1 -1
  22. package/dist/webpack/BuildNativePlugin.js.map +1 -1
  23. package/dist/webpack/Combination.js +16 -6
  24. package/dist/webpack/Combination.js.map +1 -1
  25. package/dist/webpack/H5Combination.js +15 -5
  26. package/dist/webpack/H5Combination.js.map +1 -1
  27. package/dist/webpack/H5WebpackModule.js +6 -5
  28. package/dist/webpack/H5WebpackModule.js.map +1 -1
  29. package/dist/webpack/H5WebpackPlugin.js +26 -6
  30. package/dist/webpack/H5WebpackPlugin.js.map +1 -1
  31. package/dist/webpack/MiniCombination.js.map +1 -1
  32. package/dist/webpack/MiniWebpackPlugin.js +1 -1
  33. package/dist/webpack/MiniWebpackPlugin.js.map +1 -1
  34. package/package.json +17 -19
  35. package/dist/prebundle/bundle.js +0 -170
  36. package/dist/prebundle/bundle.js.map +0 -1
  37. package/dist/prebundle/constant.js +0 -60
  38. package/dist/prebundle/constant.js.map +0 -1
  39. package/dist/prebundle/index.h5.js +0 -235
  40. package/dist/prebundle/index.h5.js.map +0 -1
  41. package/dist/prebundle/index.mini.js +0 -251
  42. package/dist/prebundle/index.mini.js.map +0 -1
  43. package/dist/prebundle/scanImports.js +0 -186
  44. package/dist/prebundle/scanImports.js.map +0 -1
  45. package/dist/prebundle/utils.js +0 -173
  46. package/dist/prebundle/utils.js.map +0 -1
  47. package/dist/prebundle/webpack/TaroContainerEntryModule.js +0 -79
  48. package/dist/prebundle/webpack/TaroContainerEntryModule.js.map +0 -1
  49. package/dist/prebundle/webpack/TaroContainerPlugin.js +0 -73
  50. package/dist/prebundle/webpack/TaroContainerPlugin.js.map +0 -1
  51. package/dist/prebundle/webpack/TaroContainerReferencePlugin.js +0 -127
  52. package/dist/prebundle/webpack/TaroContainerReferencePlugin.js.map +0 -1
@@ -1,251 +0,0 @@
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
- exports.preBundle = void 0;
16
- // Inspired by [vite](https://github.com/vitejs/vite)
17
- /** @license
18
- * MIT License
19
- *
20
- * Copyright (c) 2019-present, Yuxi (Evan) You and Vite contributors
21
- *
22
- * Permission is hereby granted, free of charge, to any person obtaining a copy
23
- * of this software and associated documentation files (the "Software"), to deal
24
- * in the Software without restriction, including without limitation the rights
25
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
26
- * copies of the Software, and to permit persons to whom the Software is
27
- * furnished to do so, subject to the following conditions:
28
- *
29
- * The above copyright notice and this permission notice shall be included in all
30
- * copies or substantial portions of the Software.
31
- *
32
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
33
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
34
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
35
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
36
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
37
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
38
- * SOFTWARE.
39
- */
40
- const helper_1 = require("@tarojs/helper");
41
- const fs_extra_1 = __importDefault(require("fs-extra"));
42
- const path_1 = __importDefault(require("path"));
43
- const perf_hooks_1 = require("perf_hooks");
44
- const webpack_1 = __importDefault(require("webpack"));
45
- const bundle_1 = require("./bundle");
46
- const scanImports_1 = require("./scanImports");
47
- const utils_1 = require("./utils");
48
- const TaroContainerPlugin_1 = __importDefault(require("./webpack/TaroContainerPlugin"));
49
- function preBundle(combination) {
50
- return __awaiter(this, void 0, void 0, function* () {
51
- const prebundleOptions = (0, utils_1.getPrebundleOptions)(combination);
52
- if (!prebundleOptions.enable)
53
- return;
54
- const appPath = combination.appPath;
55
- const cacheDir = prebundleOptions.cacheDir || (0, utils_1.getCacheDir)(appPath);
56
- const prebundleCacheDir = path_1.default.resolve(cacheDir, './prebundle');
57
- const remoteCacheDir = path_1.default.resolve(cacheDir, './remote');
58
- const metadataPath = path_1.default.join(cacheDir, 'metadata.json');
59
- const metadata = {};
60
- const preMetadata = {};
61
- try {
62
- if (prebundleOptions.force === true) {
63
- Object.assign(preMetadata, fs_extra_1.default.readJSONSync(metadataPath));
64
- }
65
- }
66
- catch (e) { }
67
- let isUseCache = true;
68
- const resolveOptions = combination.chain.toConfig().resolve;
69
- (0, utils_1.createResolve)(appPath, resolveOptions);
70
- const measure = (0, utils_1.getMeasure)(prebundleOptions.timings);
71
- /**
72
- * 找出所有 webpack entry
73
- * TODO:
74
- * - 目前只处理了 Page entry,例如原生小程序组件 js entry 等并没有处理
75
- */
76
- const entries = [];
77
- const config = combination.config;
78
- const appJsPath = config.entry.app[0];
79
- const appConfigPath = (0, helper_1.resolveMainFilePath)(`${appJsPath.replace(path_1.default.extname(appJsPath), '')}.config`);
80
- const appConfig = (0, helper_1.readConfig)(appConfigPath);
81
- entries.push(appJsPath);
82
- appConfig.pages.forEach((page) => {
83
- const pageJsPath = (0, helper_1.resolveMainFilePath)(path_1.default.join(appPath, combination.sourceRoot, page));
84
- entries.push(pageJsPath);
85
- });
86
- // console.log('\nPrebundle entries: \n', ...entries.map(entry => `\t${entry}\n`, '\n'))
87
- /**
88
- * 1. 扫描出所有的 node_modules 依赖
89
- */
90
- const SCAN_START = perf_hooks_1.performance.now();
91
- // plugin-platform 等插件的 runtime 文件入口
92
- const runtimePath = typeof config.runtimePath === 'string' ? [config.runtimePath] : config.runtimePath || [];
93
- const deps = yield (0, scanImports_1.scanImports)({
94
- entries,
95
- combination,
96
- include: [
97
- '@tarojs/taro',
98
- '@tarojs/runtime',
99
- ...runtimePath,
100
- ...prebundleOptions.include || []
101
- ],
102
- exclude: [
103
- // 小程序编译 Host 时需要扫描 @tarojs/components 的 useExports,因此不能被 external
104
- '@tarojs/components',
105
- ...prebundleOptions.exclude || []
106
- ]
107
- });
108
- console.log(helper_1.chalk.cyan('Prebundle dependencies: \n', ...JSON.parse((0, utils_1.formatDepsString)(deps)).map(dep => ` ${dep[0]}\n`)));
109
- measure('Scan imports duration', SCAN_START);
110
- /**
111
- * 2. 使用 esbuild 对 node_modules 依赖进行 bundle
112
- */
113
- const PREBUNDLE_START = perf_hooks_1.performance.now();
114
- metadata.bundleHash = yield (0, utils_1.getBundleHash)(deps, combination, cacheDir);
115
- if (preMetadata.bundleHash !== metadata.bundleHash) {
116
- isUseCache = false;
117
- const { metafile } = yield (0, bundle_1.bundle)(deps, combination, prebundleCacheDir);
118
- // 找出 @tarojs/runtime 被 split 切分的 chunk,作为后续 ProvidePlugin 的提供者。
119
- // 原因是 @tarojs/runtime 里使用了一些如 raf、caf 等全局变量,又因为 esbuild 把
120
- // @tarojs/runtime split 成 entry 和依赖 chunk 两部分。如果我们把 entry 作为
121
- // ProvidePlugin 的提供者,依赖 chunk 会被注入 raf、caf,导致循环依赖的问题。所以
122
- // 这种情况下只能把依赖 chunk 作为 ProvidePlugin 的提供者。
123
- Object.keys(metafile.outputs).some(key => {
124
- const output = metafile.outputs[key];
125
- if (output.entryPoint === 'entry:@tarojs_runtime') {
126
- const dep = output.imports.find(dep => {
127
- const depPath = dep.path;
128
- const depOutput = metafile.outputs[depPath];
129
- return depOutput.exports.includes('TaroRootElement');
130
- });
131
- if (dep) {
132
- metadata.taroRuntimeBundlePath = path_1.default.join(appPath, dep.path);
133
- }
134
- return true;
135
- }
136
- });
137
- }
138
- else {
139
- metadata.taroRuntimeBundlePath = path_1.default.join(appPath, preMetadata.taroRuntimeBundlePath);
140
- }
141
- measure('Prebundle duration', PREBUNDLE_START);
142
- /**
143
- * 3. 把依赖的 bundle 产物打包成 Webpack Module Federation 格式
144
- */
145
- const BUILD_LIB_START = perf_hooks_1.performance.now();
146
- const exposes = {};
147
- const mode = process.env.NODE_ENV === 'production' ? 'production' : 'development';
148
- const devtool = combination.enableSourceMap && 'hidden-source-map';
149
- const mainBuildOutput = combination.chain.output.entries();
150
- const taroRuntimeBundlePath = metadata.taroRuntimeBundlePath || exposes['./@tarojs/runtime'];
151
- const output = {
152
- path: remoteCacheDir,
153
- chunkLoadingGlobal: mainBuildOutput.chunkLoadingGlobal,
154
- globalObject: mainBuildOutput.globalObject
155
- };
156
- metadata.mfHash = (0, utils_1.getMfHash)({
157
- bundleHash: metadata.bundleHash,
158
- mode,
159
- devtool,
160
- output,
161
- taroRuntimeBundlePath
162
- });
163
- if (preMetadata.mfHash !== metadata.mfHash) {
164
- isUseCache = false;
165
- fs_extra_1.default.existsSync(remoteCacheDir) && fs_extra_1.default.emptyDirSync(remoteCacheDir);
166
- for (const id of deps.keys()) {
167
- const flatId = (0, utils_1.flattenId)(id);
168
- exposes[`./${id}`] = path_1.default.join(prebundleCacheDir, `${flatId}.js`);
169
- }
170
- metadata.runtimeRequirements = new Set();
171
- const compiler = (0, webpack_1.default)({
172
- devtool,
173
- entry: path_1.default.resolve(__dirname, './webpack/index.js'),
174
- mode,
175
- output,
176
- plugins: [
177
- new webpack_1.default.container.ModuleFederationPlugin({
178
- name: 'lib_app',
179
- filename: 'remoteEntry.js',
180
- runtime: 'runtime',
181
- exposes
182
- }),
183
- new TaroContainerPlugin_1.default(metadata.runtimeRequirements),
184
- new webpack_1.default.ProvidePlugin({
185
- window: [taroRuntimeBundlePath, 'window$1'],
186
- document: [taroRuntimeBundlePath, 'document$1'],
187
- navigator: [taroRuntimeBundlePath, 'navigator'],
188
- requestAnimationFrame: [taroRuntimeBundlePath, 'raf'],
189
- cancelAnimationFrame: [taroRuntimeBundlePath, 'caf'],
190
- Element: [taroRuntimeBundlePath, 'TaroElement'],
191
- SVGElement: [taroRuntimeBundlePath, 'SVGElement'],
192
- MutationObserver: [taroRuntimeBundlePath, 'MutationObserver']
193
- })
194
- ],
195
- cache: {
196
- type: 'filesystem',
197
- cacheDirectory: path_1.default.join(cacheDir, 'webpack-cache'),
198
- buildDependencies: {
199
- config: Object.values(exposes)
200
- }
201
- }
202
- });
203
- metadata.remoteAssets = yield new Promise((resolve, reject) => {
204
- compiler.run((err, stats) => {
205
- compiler.close(err2 => {
206
- var _a;
207
- if (err || err2)
208
- return reject(err || err2);
209
- const { assets } = stats.toJson();
210
- const remoteAssets = ((_a = assets === null || assets === void 0 ? void 0 : assets.filter(item => item.name !== 'runtime.js')) === null || _a === void 0 ? void 0 : _a.map(item => ({
211
- name: path_1.default.join('prebundle', item.name)
212
- }))) || [];
213
- resolve(remoteAssets);
214
- });
215
- });
216
- });
217
- }
218
- else {
219
- metadata.runtimeRequirements = new Set(preMetadata.runtimeRequirements);
220
- metadata.remoteAssets = preMetadata.remoteAssets;
221
- }
222
- fs_extra_1.default.copy(remoteCacheDir, path_1.default.join(mainBuildOutput.path, 'prebundle'));
223
- measure('Build remote lib-app duration', BUILD_LIB_START);
224
- /**
225
- * 4. 项目 Host 配置 Module Federation
226
- */
227
- const chain = combination.chain;
228
- const MfOpt = {
229
- name: 'main_app',
230
- remotes: {
231
- 'lib-app': 'lib_app@http://localhost:3000/remoteEntry.js'
232
- }
233
- };
234
- chain
235
- .plugin('ModuleFederationPlugin')
236
- .use(webpack_1.default.container.ModuleFederationPlugin, [MfOpt]);
237
- chain
238
- .plugin('TaroContainerReferencePlugin')
239
- .use(path_1.default.resolve(__dirname, './webpack/TaroContainerReferencePlugin.js'), [
240
- MfOpt,
241
- deps,
242
- metadata.remoteAssets,
243
- metadata.runtimeRequirements
244
- ]);
245
- if (!isUseCache) {
246
- (0, utils_1.commitMeta)(appPath, metadataPath, metadata);
247
- }
248
- });
249
- }
250
- exports.preBundle = preBundle;
251
- //# sourceMappingURL=index.mini.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mini.js","sourceRoot":"","sources":["../../src/prebundle/index.mini.ts"],"names":[],"mappings":"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"}
@@ -1,186 +0,0 @@
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
- exports.scanImports = void 0;
16
- const esbuild_1 = __importDefault(require("esbuild"));
17
- const fs_1 = __importDefault(require("fs"));
18
- const path_1 = __importDefault(require("path"));
19
- const constant_1 = require("./constant");
20
- const utils_1 = require("./utils");
21
- function scanImports({ entries, combination, include = [], exclude = [] }) {
22
- return __awaiter(this, void 0, void 0, function* () {
23
- const deps = new Map();
24
- const scanImportsPlugin = getScanImportsPlugin(deps, include, exclude);
25
- yield Promise.all(entries.map(entry => esbuild_1.default.build({
26
- absWorkingDir: combination.appPath,
27
- entryPoints: [entry],
28
- bundle: true,
29
- write: false,
30
- format: 'esm',
31
- plugins: [
32
- scanImportsPlugin
33
- ]
34
- })));
35
- // 有一些 Webpack loaders 添加的依赖没有办法提前分析出来
36
- // 可以把它们写进 includes,然后在这里 resolve 后加入到 deps
37
- const resolve = (0, utils_1.getResolve)();
38
- yield Promise.all(include.map((item) => __awaiter(this, void 0, void 0, function* () {
39
- const resolvePath = yield resolve(combination.appPath, item);
40
- deps.set(item, resolvePath);
41
- })));
42
- return deps;
43
- });
44
- }
45
- exports.scanImports = scanImports;
46
- /**
47
- * 收集 node_modules 依赖
48
- * Circumstances:
49
- * 1. import 'xxx.scss', import '../xxx.png' => external
50
- * 2. import 'xxx.vue', import '../xxx.vue'
51
- * => collect script: { key: { loader, contents } }
52
- * => virtual-mode compose of "export * from 'key';""
53
- * => load virtual-mode and return { loader, contents }
54
- * 3. import 'xxx', import 'xxx/yyy.ext', import '@xxx/alias'
55
- * => resolve
56
- * => path.includes(node_modules) && .js|.jsx|.ts|.tsx => collect + external
57
- * => .vue => (2)
58
- * => asserts => (1)
59
- * => src => return
60
- * 4. import '../xxx', import '../xxx.ext'
61
- * => resolve
62
- * => .vue => (2)
63
- * => src => return
64
- */
65
- function getScanImportsPlugin(deps, includes, excludes) {
66
- const resolve = (0, utils_1.getResolve)();
67
- // for storing vue <script> contents
68
- const scripts = new Map();
69
- return {
70
- name: 'scanImports',
71
- setup(build) {
72
- // assets
73
- build.onResolve(({ filter: constant_1.assetsRE }), utils_1.externalModule);
74
- // .vue
75
- build.onLoad({ filter: /\.vue$/, namespace: 'vue' }, ({ path }) => {
76
- let raw = fs_1.default.readFileSync(path, 'utf-8');
77
- raw = raw.replace(constant_1.commentRE, '<!---->');
78
- const regex = constant_1.scriptRE;
79
- regex.lastIndex = 0;
80
- let js = '';
81
- let scriptId = 0;
82
- let match;
83
- while ((match = regex.exec(raw))) {
84
- const [, openTag, content] = match;
85
- const langMatch = openTag.match(constant_1.langRE);
86
- const lang = langMatch && (langMatch[1] || langMatch[2] || langMatch[3]);
87
- let loader = 'js';
88
- if (lang === 'ts' || lang === 'tsx' || lang === 'jsx') {
89
- loader = lang;
90
- }
91
- if (content.trim()) {
92
- // append imports in TS to prevent esbuild from removing them
93
- // since they may be used in the template
94
- const contents = content +
95
- (loader.startsWith('ts') ? extractImportPaths(content) : '');
96
- const key = `${path}?id=${scriptId++}`;
97
- scripts.set(key, {
98
- loader,
99
- contents
100
- });
101
- const virtualModulePath = JSON.stringify(constant_1.virtualModulePrefix + key);
102
- js += `export * from ${virtualModulePath}\n`;
103
- }
104
- }
105
- // "export * from" syntax will not re'export "default", so we patch one.
106
- if (!js.includes('export default')) {
107
- js += 'export default {}';
108
- }
109
- return {
110
- loader: 'js',
111
- contents: js
112
- };
113
- });
114
- build.onResolve(({ filter: constant_1.virtualModuleRE }), ({ path }) => {
115
- return {
116
- path: path.replace(constant_1.virtualModulePrefix, ''),
117
- namespace: 'script'
118
- };
119
- });
120
- build.onLoad(({ filter: /.*/, namespace: 'script' }), ({ path }) => {
121
- return scripts.get(path);
122
- });
123
- // bare imports
124
- build.onResolve({ filter: /^[\w@][^:]/ }, ({ path: id, importer }) => __awaiter(this, void 0, void 0, function* () {
125
- if ((0, utils_1.isExclude)(id, excludes))
126
- return (0, utils_1.externalModule)({ path: id });
127
- if (deps.has(id))
128
- return (0, utils_1.externalModule)({ path: id });
129
- const resolvedPath = yield resolve(path_1.default.dirname(importer), id);
130
- if (resolvedPath.includes('node_modules') || includes.includes(id)) {
131
- if ((0, utils_1.canBeOptimized)(resolvedPath)) {
132
- deps.set(id, resolvedPath);
133
- }
134
- return (0, utils_1.externalModule)({ path: id });
135
- }
136
- else if ((0, utils_1.canBeScaned)(resolvedPath)) {
137
- return {
138
- path: resolvedPath,
139
- namespace: 'vue'
140
- };
141
- }
142
- else if (constant_1.assetsRE.test(resolvedPath)) {
143
- (0, utils_1.externalModule)({ path: id });
144
- }
145
- else {
146
- return {
147
- path: resolvedPath
148
- };
149
- }
150
- }));
151
- // catch all
152
- build.onResolve({ filter: /.*/ }, ({ path: id, importer }) => __awaiter(this, void 0, void 0, function* () {
153
- const resolvedPath = yield resolve(path_1.default.dirname(importer), id);
154
- const namespace = (0, utils_1.canBeScaned)(resolvedPath) ? 'vue' : undefined;
155
- return {
156
- path: resolvedPath,
157
- namespace
158
- };
159
- }));
160
- }
161
- };
162
- }
163
- /**
164
- * when using TS + (Vue + `<script setup>`) or Svelte, imports may seem
165
- * unused to esbuild and dropped in the build output, which prevents
166
- * esbuild from crawling further.
167
- * the solution is to add `import 'x'` for every source to force
168
- * esbuild to keep crawling due to potential side effects.
169
- */
170
- function extractImportPaths(code) {
171
- // empty singleline & multiline comments to avoid matching comments
172
- code = code
173
- .replace(constant_1.multilineCommentsRE, '/* */')
174
- .replace(constant_1.singlelineCommentsRE, '');
175
- let js = '';
176
- let m;
177
- while ((m = constant_1.importsRE.exec(code)) != null) {
178
- // This is necessary to avoid infinite loops with zero-width matches
179
- if (m.index === constant_1.importsRE.lastIndex) {
180
- constant_1.importsRE.lastIndex++;
181
- }
182
- js += `\nimport ${m[1]}`;
183
- }
184
- return js;
185
- }
186
- //# sourceMappingURL=scanImports.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scanImports.js","sourceRoot":"","sources":["../../src/prebundle/scanImports.ts"],"names":[],"mappings":"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"}
@@ -1,173 +0,0 @@
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
- exports.getMeasure = exports.getPrebundleOptions = 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;
16
- const helper_1 = require("@tarojs/helper");
17
- const shared_1 = require("@tarojs/shared");
18
- const crypto_1 = require("crypto");
19
- const enhanced_resolve_1 = __importDefault(require("enhanced-resolve"));
20
- const fs_extra_1 = __importDefault(require("fs-extra"));
21
- const path_1 = __importDefault(require("path"));
22
- const perf_hooks_1 = require("perf_hooks");
23
- let resolve;
24
- function createResolve(appPath, resolveOptions) {
25
- const defaultResolveOptions = {
26
- conditionNames: ['require', 'import', 'module', 'webpack', 'development', 'browser'],
27
- aliasFields: ['browser'],
28
- cache: true,
29
- mainFiles: ['index'],
30
- exportsFields: ['exports'],
31
- roots: appPath
32
- };
33
- const resolver = enhanced_resolve_1.default.create(Object.assign(Object.assign({}, defaultResolveOptions), resolveOptions));
34
- resolve = function (importer, request) {
35
- return new Promise((resolve, reject) => {
36
- resolver({}, importer, request, {}, (err, resolvedPath) => {
37
- if (err)
38
- return reject(err);
39
- resolve(resolvedPath);
40
- });
41
- });
42
- };
43
- }
44
- exports.createResolve = createResolve;
45
- function getResolve() {
46
- return resolve;
47
- }
48
- exports.getResolve = getResolve;
49
- function externalModule({ path }) {
50
- return {
51
- path,
52
- external: true
53
- };
54
- }
55
- exports.externalModule = externalModule;
56
- function canBeOptimized(path) {
57
- return /\.[jt]sx?$/.test(path);
58
- }
59
- exports.canBeOptimized = canBeOptimized;
60
- function canBeScaned(path) {
61
- return /\.vue/.test(path);
62
- }
63
- exports.canBeScaned = canBeScaned;
64
- function flattenId(id) {
65
- return id.replace(/(\s*>\s*)/g, '__').replace(/[/.:]/g, '_');
66
- }
67
- exports.flattenId = flattenId;
68
- function getCacheDir(appPath) {
69
- return path_1.default.resolve(appPath, './node_modules/.taro');
70
- }
71
- exports.getCacheDir = getCacheDir;
72
- function getDefines(combination) {
73
- let defines;
74
- combination.chain.plugin('definePlugin').tap(args => {
75
- defines = args[0];
76
- return args;
77
- });
78
- return defines;
79
- }
80
- exports.getDefines = getDefines;
81
- function isExclude(id, excludes) {
82
- return Boolean(excludes.find(item => {
83
- const dollarTailRE = /\$$/;
84
- if (dollarTailRE.test(item)) {
85
- // 全路径匹配
86
- item = item.replace(dollarTailRE, '');
87
- if (item === id)
88
- return true;
89
- }
90
- else {
91
- if (item === id || id.startsWith(item + '/'))
92
- return true;
93
- }
94
- }));
95
- }
96
- exports.isExclude = isExclude;
97
- function getHash(content) {
98
- return (0, crypto_1.createHash)('sha256').update(content).digest('hex').substring(0, 8);
99
- }
100
- exports.getHash = getHash;
101
- function getBundleHash(deps, combination, cacheDir) {
102
- return __awaiter(this, void 0, void 0, function* () {
103
- const appPath = combination.appPath;
104
- const defines = getDefines(combination);
105
- const lockfiles = ['package-lock.json', 'yarn.lock', 'pnpm-lock.yaml'];
106
- const lockfilesContents = yield Promise.all(lockfiles.map(item => {
107
- return new Promise(resolve => {
108
- fs_extra_1.default.readFile(path_1.default.join(appPath, item))
109
- .then(content => resolve(content.toString()))
110
- .catch(() => resolve(''));
111
- });
112
- }));
113
- return getHash(formatDepsString(deps) +
114
- lockfilesContents.join('\n') +
115
- JSON.stringify(defines) +
116
- cacheDir);
117
- });
118
- }
119
- exports.getBundleHash = getBundleHash;
120
- function formatDepsString(deps) {
121
- const list = Array.from(deps.entries());
122
- list.sort((a, b) => a[0].localeCompare(b[0]));
123
- return JSON.stringify(list);
124
- }
125
- exports.formatDepsString = formatDepsString;
126
- function getMfHash(obj) {
127
- return getHash(JSON.stringify(obj));
128
- }
129
- exports.getMfHash = getMfHash;
130
- function commitMeta(appPath, metadataPath, metadata) {
131
- return __awaiter(this, void 0, void 0, function* () {
132
- // Todo: 改为相对路径
133
- yield fs_extra_1.default.writeJSON(metadataPath, metadata, {
134
- spaces: 2,
135
- replacer(key, value) {
136
- if (value instanceof Set) {
137
- return Array.from(value);
138
- }
139
- if (key === 'taroRuntimeBundlePath') {
140
- return path_1.default.relative(appPath, value);
141
- }
142
- return value;
143
- }
144
- });
145
- });
146
- }
147
- exports.commitMeta = commitMeta;
148
- function getPrebundleOptions(combination) {
149
- const config = combination.config;
150
- const defaultOptions = {
151
- enable: process.env.NODE_ENV !== 'production',
152
- timings: false,
153
- force: false,
154
- include: [],
155
- exclude: []
156
- };
157
- if ((0, shared_1.isObject)(config.compiler)) {
158
- return (0, helper_1.recursiveMerge)({}, defaultOptions, config.compiler.prebundle);
159
- }
160
- return defaultOptions;
161
- }
162
- exports.getPrebundleOptions = getPrebundleOptions;
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
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/prebundle/utils.ts"],"names":[],"mappings":"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"}