xhs-mp-compiler-cli 2.0.33-beta.1 → 2.0.33-beta.2
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.
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
];
|
|
34
34
|
const proxyDynamicVars = ["__xhsRoute", "__pageId"];
|
|
35
35
|
/**
|
|
36
|
-
*
|
|
36
|
+
* 对齐微信8.0.62版本中全局环境中的值
|
|
37
37
|
*/
|
|
38
38
|
const baseJSValue = [
|
|
39
39
|
"Object", "Function", "Array", "Number", "Boolean", "String", "Symbol", "Date", "Promise", "RegExp",
|
|
@@ -112,9 +112,10 @@
|
|
|
112
112
|
};
|
|
113
113
|
// 定时器函数包装,避免 this 绑定问题
|
|
114
114
|
const copyTimerFunctions = (items) => {
|
|
115
|
+
const _ = FrameworkGlobalThis;
|
|
115
116
|
for (const item of items) {
|
|
116
117
|
Object.defineProperty(BussinessGlobalThis, item, {
|
|
117
|
-
value: (...args) =>
|
|
118
|
+
value: (...args) => _[item](...args),
|
|
118
119
|
writable: true,
|
|
119
120
|
configurable: true,
|
|
120
121
|
enumerable: true,
|
|
@@ -130,12 +131,10 @@
|
|
|
130
131
|
copyTimerFunctions(['setTimeout', 'clearTimeout', 'setInterval', 'clearInterval']);
|
|
131
132
|
try {
|
|
132
133
|
Object.defineProperty(BussinessGlobalThis, 'globalThis', {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
configurable: false,
|
|
138
|
-
enumerable: true,
|
|
134
|
+
value: BussinessGlobalThis,
|
|
135
|
+
configurable: true,
|
|
136
|
+
enumerable: false,
|
|
137
|
+
writable: true
|
|
139
138
|
});
|
|
140
139
|
}
|
|
141
140
|
catch (error) {
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { IXhsCompiler } from 'xhs-mp-pack';
|
|
2
2
|
import { IPresetOptions } from '../../../../types';
|
|
3
|
+
import { Compilation, sources } from 'webpack';
|
|
4
|
+
type SourceMapSourceType = sources.SourceMapSource;
|
|
5
|
+
type RawSourceType = sources.RawSource;
|
|
6
|
+
type ConcatSourceType = sources.ConcatSource;
|
|
7
|
+
type GeneratedSource = SourceMapSourceType | RawSourceType | ConcatSourceType;
|
|
3
8
|
declare class ServiceChunkPlugin {
|
|
4
9
|
options: IPresetOptions;
|
|
5
10
|
constructor(options: IPresetOptions);
|
|
6
11
|
apply(compiler: IXhsCompiler): void;
|
|
7
|
-
updateIndependentService(compilation:
|
|
8
|
-
updateNonIndependentService(compilation:
|
|
12
|
+
updateIndependentService(compilation: Compilation, wrappedRuntimeSource: GeneratedSource): void;
|
|
13
|
+
updateNonIndependentService(compilation: Compilation): void;
|
|
9
14
|
}
|
|
10
15
|
export default ServiceChunkPlugin;
|
|
@@ -16,76 +16,94 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
16
16
|
const webpack_1 = require("webpack");
|
|
17
17
|
const sanbox_1 = require("./sanbox");
|
|
18
18
|
// 使用 webpack 内置的 sources 类型
|
|
19
|
-
const { SourceMapSource, RawSource } = webpack_1.sources;
|
|
20
|
-
//
|
|
21
|
-
function
|
|
19
|
+
const { SourceMapSource, RawSource, ConcatSource } = webpack_1.sources;
|
|
20
|
+
// 安全地将任何源码转换为 GeneratedSource
|
|
21
|
+
function ensureGeneratedSource(source) {
|
|
22
22
|
if (!source) {
|
|
23
|
-
return
|
|
23
|
+
return new RawSource('');
|
|
24
24
|
}
|
|
25
|
-
// 如果是字符串,直接返回
|
|
26
25
|
if (typeof source === 'string') {
|
|
27
|
-
return
|
|
26
|
+
return new RawSource(source);
|
|
28
27
|
}
|
|
29
|
-
|
|
30
|
-
const result = source.sourceAndMap();
|
|
31
|
-
const sourceString = typeof result.source === 'string' ? result.source : result.source.toString();
|
|
32
|
-
return { sourceString, sourceMap: result.map };
|
|
28
|
+
return source;
|
|
33
29
|
}
|
|
34
|
-
//
|
|
35
|
-
function
|
|
36
|
-
if (!sourceMap) {
|
|
37
|
-
return new RawSource(sourceCode);
|
|
38
|
-
}
|
|
30
|
+
// 调试辅助函数:验证 sourcemap 的完整性
|
|
31
|
+
function validateSourceMapIntegrity(source, filename) {
|
|
39
32
|
try {
|
|
40
|
-
|
|
33
|
+
const result = source.sourceAndMap();
|
|
34
|
+
if (result.map) {
|
|
35
|
+
// 基本的 sourcemap 结构验证
|
|
36
|
+
const map = result.map;
|
|
37
|
+
if (!map.sources || !Array.isArray(map.sources)) {
|
|
38
|
+
console.warn(`⚠️ Invalid sourcemap for ${filename}: missing or invalid sources`);
|
|
39
|
+
}
|
|
40
|
+
if (!map.mappings || typeof map.mappings !== 'string') {
|
|
41
|
+
console.warn(`⚠️ Invalid sourcemap for ${filename}: missing or invalid mappings`);
|
|
42
|
+
}
|
|
43
|
+
if (map.sources.length === 0) {
|
|
44
|
+
console.warn(`⚠️ Empty sourcemap sources for ${filename}`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
41
47
|
}
|
|
42
48
|
catch (error) {
|
|
43
|
-
console.warn(
|
|
44
|
-
return new RawSource(sourceCode);
|
|
49
|
+
console.warn(`⚠️ Failed to validate sourcemap for ${filename}:`, error);
|
|
45
50
|
}
|
|
46
51
|
}
|
|
47
|
-
//
|
|
48
|
-
function
|
|
49
|
-
|
|
52
|
+
// 创建源码包装器,正确处理 sourcemap 偏移
|
|
53
|
+
function createSourceWrapper(prefixCode, originalSource, suffixCode, filename) {
|
|
54
|
+
// 如果没有原始源码,只返回前缀和后缀的组合
|
|
55
|
+
if (!originalSource) {
|
|
56
|
+
const combinedCode = [prefixCode, suffixCode].filter(Boolean).join('\n');
|
|
57
|
+
return new RawSource(combinedCode);
|
|
58
|
+
}
|
|
59
|
+
const concatSource = new ConcatSource();
|
|
60
|
+
// 添加前缀代码
|
|
61
|
+
if (prefixCode) {
|
|
62
|
+
concatSource.add(new RawSource(prefixCode + '\n'));
|
|
63
|
+
}
|
|
64
|
+
// 添加原始源码(保持 sourcemap)
|
|
65
|
+
concatSource.add(ensureGeneratedSource(originalSource));
|
|
66
|
+
// 添加后缀代码
|
|
67
|
+
if (suffixCode) {
|
|
68
|
+
concatSource.add(new RawSource('\n' + suffixCode));
|
|
69
|
+
}
|
|
70
|
+
return concatSource;
|
|
71
|
+
}
|
|
72
|
+
// 通用的代码包装函数 - 使用 ConcatSource 保持 sourcemap 准确性
|
|
73
|
+
function wrapCodeWithGlobalCheck(source, globalVarName, filename) {
|
|
74
|
+
const prefixCode = [
|
|
50
75
|
`if (!globalThis.${globalVarName}) {`,
|
|
51
|
-
`globalThis.${globalVarName} = true
|
|
52
|
-
code,
|
|
53
|
-
`}`
|
|
76
|
+
`globalThis.${globalVarName} = true;`
|
|
54
77
|
].join('\n');
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
return new RawSource(wrappedCode);
|
|
78
|
+
const suffixCode = '}';
|
|
79
|
+
return createSourceWrapper(prefixCode, source, suffixCode, filename);
|
|
59
80
|
}
|
|
60
81
|
// 为 common 代码添加注入保护包装
|
|
61
82
|
function wrapCommonCodeWithProtection(commonSource) {
|
|
62
|
-
//
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
68
|
-
const wrappedSource = wrapCodeWithGlobalCheck(sourceString, '__XHS_COMMON_SERVICE_REGISTERED__', 'service-common.js', sourceMap, sourceString);
|
|
69
|
-
const wrappedSourceAndMap = extractSourceAndMap(wrappedSource);
|
|
70
|
-
return wrappedSourceAndMap;
|
|
83
|
+
// 如果没有内容,返回 null
|
|
84
|
+
if (!commonSource) {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
return wrapCodeWithGlobalCheck(commonSource, '__XHS_COMMON_SERVICE_REGISTERED__', 'service-common.js');
|
|
71
88
|
}
|
|
72
|
-
// 处理业务代码的 sourcemap
|
|
73
|
-
function createBusinessCodeSource(
|
|
74
|
-
const
|
|
75
|
-
//
|
|
76
|
-
if (
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
+
// 处理业务代码的 sourcemap(支持不同的代码组合)- 使用 ConcatSource 保持准确的 sourcemap
|
|
90
|
+
function createBusinessCodeSource(runtimeSource, serviceSource, filename, commonSource) {
|
|
91
|
+
const concatSource = new ConcatSource();
|
|
92
|
+
// 添加 runtime 代码
|
|
93
|
+
if (runtimeSource) {
|
|
94
|
+
concatSource.add(ensureGeneratedSource(runtimeSource));
|
|
95
|
+
concatSource.add(new RawSource('\n'));
|
|
96
|
+
}
|
|
97
|
+
// 添加 common 代码(如果有)
|
|
98
|
+
if (commonSource) {
|
|
99
|
+
concatSource.add(ensureGeneratedSource(commonSource));
|
|
100
|
+
concatSource.add(new RawSource('\n'));
|
|
101
|
+
}
|
|
102
|
+
// 添加 service 代码
|
|
103
|
+
if (serviceSource) {
|
|
104
|
+
concatSource.add(ensureGeneratedSource(serviceSource));
|
|
105
|
+
}
|
|
106
|
+
return concatSource;
|
|
89
107
|
}
|
|
90
108
|
// bom环境变量 与微信产物对齐
|
|
91
109
|
const bomVars = [
|
|
@@ -105,32 +123,28 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
105
123
|
function adapteServiceCode(assetName, serviceSource, packSetting, project, isIndependent) {
|
|
106
124
|
var _a;
|
|
107
125
|
const subPackages = project.getSubPackages();
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
else {
|
|
131
|
-
result = serviceSource;
|
|
132
|
-
}
|
|
133
|
-
return result;
|
|
126
|
+
if (!packSetting.runInServiceSandbox) {
|
|
127
|
+
return typeof serviceSource === 'string' ? new RawSource(serviceSource) : serviceSource;
|
|
128
|
+
}
|
|
129
|
+
const subPackagesStr = subPackages.map((sub) => sub.root).join(';');
|
|
130
|
+
const prefixParts = [];
|
|
131
|
+
// 只有独立分包或主包才需要注入沙盒函数定义
|
|
132
|
+
// 非独立分包会使用主包已经定义的沙盒函数
|
|
133
|
+
if (isIndependent) {
|
|
134
|
+
// __PKG_SLOT__ 替换为真实分包路径
|
|
135
|
+
prefixParts.push(`globalThis.__XHS_CACHED_SANDBOX__ = globalThis.__XHS_CACHED_SANDBOX__ || (${(_a = sanbox_1.getXHSSandBox.toString()) === null || _a === void 0 ? void 0 : _a.replace('${PKG_SLOT}', subPackagesStr)})();`);
|
|
136
|
+
}
|
|
137
|
+
// 如果在沙盒直接定义这些属性会导致 document in 等操作符返回true 所以bom变量通过函数参数来定义
|
|
138
|
+
prefixParts.push(`(function(${bomVars.join(',')}) {`);
|
|
139
|
+
// 所有分包都需要 with 包装来使用沙盒环境
|
|
140
|
+
prefixParts.push('with (this) {');
|
|
141
|
+
const suffixParts = [
|
|
142
|
+
'}', // with 结束
|
|
143
|
+
'}).call(globalThis.__XHS_CACHED_SANDBOX__);'
|
|
144
|
+
];
|
|
145
|
+
const prefixCode = prefixParts.join('\n');
|
|
146
|
+
const suffixCode = suffixParts.join('\n');
|
|
147
|
+
return createSourceWrapper(prefixCode, serviceSource, suffixCode, assetName);
|
|
134
148
|
}
|
|
135
149
|
class ServiceChunkPlugin {
|
|
136
150
|
constructor(options) {
|
|
@@ -148,22 +162,22 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
148
162
|
const runtimeSourceOriginal = (_c = compilation.getAsset('runtime.js')) === null || _c === void 0 ? void 0 : _c.source;
|
|
149
163
|
// 当没有引用相同 js 场景时, commonChunk 将是 undefined
|
|
150
164
|
const commonSourceOriginal = (_d = compilation.getAsset('service-common.js')) === null || _d === void 0 ? void 0 : _d.source;
|
|
151
|
-
// 包装 runtime code
|
|
152
|
-
const
|
|
153
|
-
const wrappedRuntimeCodeSource = wrapCodeWithGlobalCheck(runtimeCodeString, '__XHS_WEBPACK_RUNTIME_REGISTERED__', 'runtime.js');
|
|
154
|
-
const wrappedRuntimeCode = wrappedRuntimeCodeSource.source().toString();
|
|
165
|
+
// 包装 runtime code,保持 sourcemap
|
|
166
|
+
const wrappedRuntimeSource = wrapCodeWithGlobalCheck(runtimeSourceOriginal, '__XHS_WEBPACK_RUNTIME_REGISTERED__', 'runtime.js');
|
|
155
167
|
// 为 common 代码添加注入保护包装,保持 sourcemap
|
|
156
168
|
const wrappedCommonSource = wrapCommonCodeWithProtection(commonSourceOriginal);
|
|
157
169
|
if (packSetting.enableV2 && serviceSourceV2) {
|
|
158
170
|
// 注入 v2 service.js
|
|
159
171
|
// 主包加入 runtimeChunk、commonChunk
|
|
160
172
|
const assetName = 'v2/service.js';
|
|
161
|
-
// 先获取原始的 source 和 sourcemap
|
|
162
|
-
const serviceSource = extractSourceAndMap(serviceSourceV2);
|
|
163
173
|
// 创建业务代码的 SourceMapSource(保留 common + service 的 sourcemap)
|
|
164
|
-
const concatenatedSource = createBusinessCodeSource(
|
|
174
|
+
const concatenatedSource = createBusinessCodeSource(wrappedRuntimeSource, serviceSourceV2, assetName, wrappedCommonSource);
|
|
165
175
|
// 在写入之前进行 adapteServiceCode 处理(主包,需要沙盒)
|
|
166
176
|
const finalSourceWithMap = adapteServiceCode(assetName, concatenatedSource, packSetting, project, true);
|
|
177
|
+
// 验证最终的 sourcemap 完整性
|
|
178
|
+
if (packSetting.enableSourcemap) {
|
|
179
|
+
validateSourceMapIntegrity(finalSourceWithMap, assetName);
|
|
180
|
+
}
|
|
167
181
|
// @ts-ignore
|
|
168
182
|
compilation.updateAsset(assetName, finalSourceWithMap);
|
|
169
183
|
}
|
|
@@ -171,43 +185,53 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
171
185
|
if (packSetting.enableV1 && serviceSource) {
|
|
172
186
|
// // 主包加入 runtimeChunk、commonChunk
|
|
173
187
|
const assetName = 'v1/service.js';
|
|
174
|
-
// 先获取原始的 source 和 sourcemap
|
|
175
|
-
const v1ServiceSource = extractSourceAndMap(serviceSource);
|
|
176
188
|
// 创建业务代码的 SourceMapSource(保留 common + service 的 sourcemap)
|
|
177
|
-
const concatenatedV1Source = createBusinessCodeSource(
|
|
189
|
+
const concatenatedV1Source = createBusinessCodeSource(wrappedRuntimeSource, serviceSource, assetName, wrappedCommonSource);
|
|
178
190
|
// 在写入之前进行 adapteServiceCode 处理(主包,需要沙盒)
|
|
179
191
|
const finalV1SourceWithMap = adapteServiceCode(assetName, concatenatedV1Source, packSetting, project, true);
|
|
192
|
+
// 验证最终的 sourcemap 完整性
|
|
193
|
+
if (packSetting.enableSourcemap) {
|
|
194
|
+
validateSourceMapIntegrity(finalV1SourceWithMap, assetName);
|
|
195
|
+
}
|
|
180
196
|
// @ts-ignore
|
|
181
197
|
compilation.updateAsset(assetName, finalV1SourceWithMap);
|
|
182
198
|
}
|
|
183
199
|
// 处理独立分包(只需要 runtime,不需要 common)
|
|
184
|
-
this.updateIndependentService(compilation,
|
|
200
|
+
this.updateIndependentService(compilation, wrappedRuntimeSource);
|
|
185
201
|
// 处理非独立分包(不需要 runtime 和 common)
|
|
186
202
|
this.updateNonIndependentService(compilation);
|
|
203
|
+
// 删除已合并的原始文件,避免 sourcemap 冲突和文件冗余
|
|
187
204
|
compilation.deleteAsset('runtime.js');
|
|
188
205
|
compilation.deleteAsset('service-common.js');
|
|
206
|
+
// 同时删除对应的 sourcemap 文件(如果存在)
|
|
207
|
+
if (packSetting.enableSourcemap) {
|
|
208
|
+
compilation.deleteAsset('runtime.js.map');
|
|
209
|
+
compilation.deleteAsset('service-common.js.map');
|
|
210
|
+
}
|
|
189
211
|
});
|
|
190
212
|
});
|
|
191
213
|
}
|
|
192
|
-
updateIndependentService(compilation,
|
|
214
|
+
updateIndependentService(compilation, wrappedRuntimeSource) {
|
|
193
215
|
const { project, packSetting } = this.options;
|
|
194
216
|
const usingPackageType = packSetting.usingPackageType;
|
|
195
217
|
const subPackages = project.getSubPackages();
|
|
196
218
|
subPackages
|
|
197
|
-
.filter(sub => sub.independent)
|
|
198
|
-
.forEach(sub => {
|
|
219
|
+
.filter((sub) => sub.independent)
|
|
220
|
+
.forEach((sub) => {
|
|
199
221
|
var _a;
|
|
200
222
|
const servicePath = path_1.default.join(usingPackageType, sub.root, 'service.js');
|
|
201
223
|
if (compilation.getAsset(servicePath)) {
|
|
202
224
|
const independentServiceSource = (_a = compilation.getAsset(servicePath)) === null || _a === void 0 ? void 0 : _a.source;
|
|
203
|
-
// 先获取原始的 source 和 sourcemap
|
|
204
|
-
const indepServiceSource = extractSourceAndMap(independentServiceSource);
|
|
205
225
|
// 创建独立分包的业务代码(只包含 runtime + service,不包含 common)
|
|
206
|
-
const concatenatedIndepSource = createBusinessCodeSource(
|
|
226
|
+
const concatenatedIndepSource = createBusinessCodeSource(wrappedRuntimeSource, independentServiceSource, servicePath
|
|
207
227
|
// 不传入 commonSource,所以不包含 common 代码
|
|
208
228
|
);
|
|
209
229
|
// 在写入之前进行 adapteServiceCode 处理(独立分包,需要沙盒)
|
|
210
230
|
const finalIndepSourceWithMap = adapteServiceCode(servicePath, concatenatedIndepSource, packSetting, project, true);
|
|
231
|
+
// 验证最终的 sourcemap 完整性
|
|
232
|
+
if (packSetting.enableSourcemap) {
|
|
233
|
+
validateSourceMapIntegrity(finalIndepSourceWithMap, servicePath);
|
|
234
|
+
}
|
|
211
235
|
// 写入
|
|
212
236
|
compilation.updateAsset(servicePath, finalIndepSourceWithMap);
|
|
213
237
|
if (packSetting.enableV2 && packSetting.enableV1) {
|
|
@@ -221,21 +245,23 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
221
245
|
const usingPackageType = packSetting.usingPackageType;
|
|
222
246
|
const subPackages = project.getSubPackages();
|
|
223
247
|
subPackages
|
|
224
|
-
.filter(sub => !sub.independent) // 非独立分包
|
|
225
|
-
.forEach(sub => {
|
|
248
|
+
.filter((sub) => !sub.independent) // 非独立分包
|
|
249
|
+
.forEach((sub) => {
|
|
226
250
|
var _a;
|
|
227
251
|
const servicePath = path_1.default.join(usingPackageType, sub.root, 'service.js');
|
|
228
252
|
if (compilation.getAsset(servicePath)) {
|
|
229
253
|
const nonIndependentServiceSource = (_a = compilation.getAsset(servicePath)) === null || _a === void 0 ? void 0 : _a.source;
|
|
230
|
-
// 先获取原始的 source 和 sourcemap
|
|
231
|
-
const serviceSource = extractSourceAndMap(nonIndependentServiceSource);
|
|
232
254
|
// 非独立分包只需要处理自己的 service 代码,不需要 runtime 和 common
|
|
233
|
-
const processedServiceSource = createBusinessCodeSource(
|
|
234
|
-
|
|
255
|
+
const processedServiceSource = createBusinessCodeSource(null, // 不需要 runtime
|
|
256
|
+
nonIndependentServiceSource, servicePath
|
|
235
257
|
// 不传入 commonSource,所以不包含 common 代码
|
|
236
258
|
);
|
|
237
259
|
// 在写入之前进行 adapteServiceCode 处理(非独立分包,不需要沙盒)
|
|
238
260
|
const finalServiceWithMap = adapteServiceCode(servicePath, processedServiceSource, packSetting, project, false);
|
|
261
|
+
// 验证最终的 sourcemap 完整性
|
|
262
|
+
if (packSetting.enableSourcemap) {
|
|
263
|
+
validateSourceMapIntegrity(finalServiceWithMap, servicePath);
|
|
264
|
+
}
|
|
239
265
|
// 写入
|
|
240
266
|
compilation.updateAsset(servicePath, finalServiceWithMap);
|
|
241
267
|
if (packSetting.enableV2 && packSetting.enableV1) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xhs-mp-compiler-cli",
|
|
3
|
-
"version": "2.0.33-beta.
|
|
3
|
+
"version": "2.0.33-beta.2",
|
|
4
4
|
"description": "xhs mp command tool.",
|
|
5
5
|
"preferGlobal": true,
|
|
6
6
|
"category": "esm",
|
|
@@ -88,18 +88,18 @@
|
|
|
88
88
|
"webpack-chain": "^6.5.1",
|
|
89
89
|
"webpack-sources": "^3.2.2",
|
|
90
90
|
"xhs-mp-workerpool": "^9.2.0",
|
|
91
|
-
"xhs-mp-ml-loader": "2.0.33-beta.
|
|
92
|
-
"xhs-mp-compiler-utils": "2.0.33-beta.
|
|
93
|
-
"xhs-mp-pack": "2.0.33-beta.
|
|
94
|
-
"xhs-mp-project": "2.0.33-beta.
|
|
95
|
-
"xhs-mp-shared": "2.0.33-beta.
|
|
96
|
-
"xhs-mp-shared-fs": "2.0.33-beta.
|
|
97
|
-
"xhs-mp-sjs-loader": "2.0.33-beta.
|
|
98
|
-
"xhs-mp-sketch-loader": "2.0.33-beta.
|
|
91
|
+
"xhs-mp-ml-loader": "2.0.33-beta.2",
|
|
92
|
+
"xhs-mp-compiler-utils": "2.0.33-beta.2",
|
|
93
|
+
"xhs-mp-pack": "2.0.33-beta.2",
|
|
94
|
+
"xhs-mp-project": "2.0.33-beta.2",
|
|
95
|
+
"xhs-mp-shared": "2.0.33-beta.2",
|
|
96
|
+
"xhs-mp-shared-fs": "2.0.33-beta.2",
|
|
97
|
+
"xhs-mp-sjs-loader": "2.0.33-beta.2",
|
|
98
|
+
"xhs-mp-sketch-loader": "2.0.33-beta.2",
|
|
99
99
|
"yauzl": "^2.10.0"
|
|
100
100
|
},
|
|
101
101
|
"peerDependencies": {
|
|
102
|
-
"xhs-mp-ml-parser": "2.0.33-beta.
|
|
102
|
+
"xhs-mp-ml-parser": "2.0.33-beta.2"
|
|
103
103
|
},
|
|
104
104
|
"devDependencies": {
|
|
105
105
|
"@types/babel__generator": "7.6.3",
|
|
@@ -122,7 +122,7 @@
|
|
|
122
122
|
"@types/node": "14",
|
|
123
123
|
"typescript": "5.1.6",
|
|
124
124
|
"webpack-dev-server": "4.0.0-beta.3",
|
|
125
|
-
"xhs-mp-ml-parser": "2.0.33-beta.
|
|
125
|
+
"xhs-mp-ml-parser": "2.0.33-beta.2"
|
|
126
126
|
},
|
|
127
127
|
"scripts": {
|
|
128
128
|
"version": "formula changelog && git add .",
|