react-native-update-cli 1.30.3 → 1.31.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/cli.json +3 -1
- package/lib/api.js +177 -186
- package/lib/app.js +136 -114
- package/lib/bundle.js +535 -559
- package/lib/index.js +46 -49
- package/lib/package.js +132 -136
- package/lib/user.js +43 -41
- package/lib/utils/app-info-parser/apk.js +72 -71
- package/lib/utils/app-info-parser/index.js +28 -30
- package/lib/utils/app-info-parser/ipa.js +72 -80
- package/lib/utils/app-info-parser/resource-finder.js +286 -421
- package/lib/utils/app-info-parser/utils.js +106 -120
- package/lib/utils/app-info-parser/xml-parser/binary.js +539 -637
- package/lib/utils/app-info-parser/xml-parser/manifest.js +193 -215
- package/lib/utils/app-info-parser/zip.js +40 -40
- package/lib/utils/index.js +156 -149
- package/lib/versions.js +226 -178
- package/package.json +10 -9
- package/src/api.js +6 -3
- package/src/bundle.js +11 -10
- package/src/utils/index.js +4 -2
- package/src/versions.js +80 -16
- package/src/.DS_Store +0 -0
- package/src/utils/.DS_Store +0 -0
package/lib/versions.js
CHANGED
|
@@ -1,193 +1,241 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
3
2
|
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
|
|
3
|
+
value: true
|
|
5
4
|
});
|
|
6
|
-
exports
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
var _utils = require('./utils');
|
|
11
|
-
|
|
12
|
-
var _app = require('./app');
|
|
13
|
-
|
|
14
|
-
var _package = require('./package');
|
|
15
|
-
|
|
16
|
-
var _compareVersions = require('compare-versions');
|
|
17
|
-
|
|
18
|
-
async function showVersion(appId, offset) {
|
|
19
|
-
const { data, count } = await (0, _api.get)(`/app/${appId}/version/list`);
|
|
20
|
-
console.log(`Offset ${offset}`);
|
|
21
|
-
for (const version of data) {
|
|
22
|
-
let packageInfo = version.packages.slice(0, 3).map(v => v.name).join(', ');
|
|
23
|
-
const count = version.packages.length;
|
|
24
|
-
if (count > 3) {
|
|
25
|
-
packageInfo += `...and ${count - 3} more`;
|
|
5
|
+
Object.defineProperty(exports, "commands", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return commands;
|
|
26
9
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
10
|
+
});
|
|
11
|
+
const _api = require("./api");
|
|
12
|
+
const _utils = require("./utils");
|
|
13
|
+
const _app = require("./app");
|
|
14
|
+
const _package = require("./package");
|
|
15
|
+
const _compareversions = require("compare-versions");
|
|
16
|
+
async function showVersion(appId, offset) {
|
|
17
|
+
const { data, count } = await (0, _api.get)(`/app/${appId}/version/list`);
|
|
18
|
+
console.log(`Offset ${offset}`);
|
|
19
|
+
for (const version of data){
|
|
20
|
+
let packageInfo = version.packages.slice(0, 3).map((v)=>v.name).join(', ');
|
|
21
|
+
const count = version.packages.length;
|
|
22
|
+
if (count > 3) {
|
|
23
|
+
packageInfo += `...and ${count - 3} more`;
|
|
24
|
+
}
|
|
25
|
+
if (count === 0) {
|
|
26
|
+
packageInfo = `(no package)`;
|
|
27
|
+
} else {
|
|
28
|
+
packageInfo = `[${packageInfo}]`;
|
|
29
|
+
}
|
|
30
|
+
console.log(`${version.id}) ${version.hash.slice(0, 8)} ${version.name} ${packageInfo}`);
|
|
31
31
|
}
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
return data;
|
|
32
|
+
return data;
|
|
35
33
|
}
|
|
36
|
-
|
|
37
34
|
async function listVersions(appId) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
35
|
+
let offset = 0;
|
|
36
|
+
while(true){
|
|
37
|
+
await showVersion(appId, offset);
|
|
38
|
+
const cmd = await (0, _utils.question)('page Up/page Down/Begin/Quit(U/D/B/Q)');
|
|
39
|
+
switch(cmd.toLowerCase()){
|
|
40
|
+
case 'u':
|
|
41
|
+
offset = Math.max(0, offset - 10);
|
|
42
|
+
break;
|
|
43
|
+
case 'd':
|
|
44
|
+
offset += 10;
|
|
45
|
+
break;
|
|
46
|
+
case 'b':
|
|
47
|
+
offset = 0;
|
|
48
|
+
break;
|
|
49
|
+
case 'q':
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
54
52
|
}
|
|
55
|
-
}
|
|
56
53
|
}
|
|
57
|
-
|
|
58
54
|
async function chooseVersion(appId) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
55
|
+
let offset = 0;
|
|
56
|
+
while(true){
|
|
57
|
+
const data = await showVersion(appId, offset);
|
|
58
|
+
const cmd = await (0, _utils.question)('Enter versionId or page Up/page Down/Begin(U/D/B)');
|
|
59
|
+
switch(cmd.toLowerCase()){
|
|
60
|
+
case 'U':
|
|
61
|
+
offset = Math.max(0, offset - 10);
|
|
62
|
+
break;
|
|
63
|
+
case 'D':
|
|
64
|
+
offset += 10;
|
|
65
|
+
break;
|
|
66
|
+
case 'B':
|
|
67
|
+
offset = 0;
|
|
68
|
+
break;
|
|
69
|
+
default:
|
|
70
|
+
{
|
|
71
|
+
const v = data.find((v)=>v.id === (cmd | 0));
|
|
72
|
+
if (v) {
|
|
73
|
+
return v;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
79
76
|
}
|
|
80
77
|
}
|
|
81
|
-
}
|
|
82
78
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
const { id } = await (0, _api.post)(`/app/${appId}/version/create`, {
|
|
99
|
-
name: name || (await (0, _utils.question)('输入版本名称: ')) || '(未命名)',
|
|
100
|
-
hash,
|
|
101
|
-
description: description || (await (0, _utils.question)('输入版本描述:')),
|
|
102
|
-
metaInfo: metaInfo || (await (0, _utils.question)('输入自定义的 meta info:'))
|
|
103
|
-
});
|
|
104
|
-
// TODO local diff
|
|
105
|
-
(0, _utils.saveToLocal)(fn, `${appId}/ppk/${id}.ppk`);
|
|
106
|
-
console.log(`已成功上传新热更包(id: ${id})`);
|
|
107
|
-
|
|
108
|
-
const v = await (0, _utils.question)('是否现在将此热更应用到原生包上?(Y/N)');
|
|
109
|
-
if (v.toLowerCase() === 'y') {
|
|
110
|
-
await this.update({ args: [], options: { versionId: id, platform } });
|
|
111
|
-
}
|
|
112
|
-
},
|
|
113
|
-
versions: async function ({ options }) {
|
|
114
|
-
const platform = (0, _app.checkPlatform)(options.platform || (await (0, _utils.question)('平台(ios/android):')));
|
|
115
|
-
const { appId } = await (0, _app.getSelectedApp)(platform);
|
|
116
|
-
await listVersions(appId);
|
|
117
|
-
},
|
|
118
|
-
update: async function ({ args, options }) {
|
|
119
|
-
const platform = (0, _app.checkPlatform)(options.platform || (await (0, _utils.question)('平台(ios/android):')));
|
|
120
|
-
const { appId } = await (0, _app.getSelectedApp)(platform);
|
|
121
|
-
const versionId = options.versionId || (await chooseVersion(appId)).id;
|
|
122
|
-
|
|
123
|
-
let pkgId;
|
|
124
|
-
let pkgVersion = options.packageVersion;
|
|
125
|
-
let minPkgVersion = options.minPackageVersion;
|
|
126
|
-
let maxPkgVersion = options.maxPackageVersion;
|
|
127
|
-
if (pkgVersion) {
|
|
128
|
-
pkgVersion = pkgVersion.trim();
|
|
129
|
-
const { data } = await (0, _api.get)(`/app/${appId}/package/list?limit=1000`);
|
|
130
|
-
const pkg = data.find(d => d.name === pkgVersion);
|
|
131
|
-
if (pkg) {
|
|
132
|
-
pkgId = pkg.id;
|
|
133
|
-
} else {
|
|
134
|
-
throw new Error(`未查询到匹配原生版本:${pkgVersion}`);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
if (minPkgVersion) {
|
|
138
|
-
minPkgVersion = String(minPkgVersion).trim();
|
|
139
|
-
const { data } = await (0, _api.get)(`/app/${appId}/package/list?limit=1000`);
|
|
140
|
-
const pkgs = data.filter(d => (0, _compareVersions.compare)(d.name, minPkgVersion, '>='));
|
|
141
|
-
if (pkgs.length === 0) {
|
|
142
|
-
throw new Error(`未查询到 >= ${minPkgVersion} 的原生版本`);
|
|
143
|
-
}
|
|
144
|
-
for (const pkg of pkgs) {
|
|
145
|
-
await (0, _api.put)(`/app/${appId}/package/${pkg.id}`, {
|
|
146
|
-
versionId
|
|
79
|
+
const commands = {
|
|
80
|
+
publish: async function({ args, options }) {
|
|
81
|
+
const fn = args[0];
|
|
82
|
+
const { name, description, metaInfo } = options;
|
|
83
|
+
if (!fn || !fn.endsWith('.ppk')) {
|
|
84
|
+
throw new Error('使用方法: pushy publish ppk后缀文件 --platform ios|android');
|
|
85
|
+
}
|
|
86
|
+
const platform = (0, _app.checkPlatform)(options.platform || await (0, _utils.question)('平台(ios/android):'));
|
|
87
|
+
const { appId } = await (0, _app.getSelectedApp)(platform);
|
|
88
|
+
const { hash } = await (0, _api.uploadFile)(fn);
|
|
89
|
+
const { id } = await (0, _api.post)(`/app/${appId}/version/create`, {
|
|
90
|
+
name: name || await (0, _utils.question)('输入版本名称: ') || '(未命名)',
|
|
91
|
+
hash,
|
|
92
|
+
description: description || await (0, _utils.question)('输入版本描述:'),
|
|
93
|
+
metaInfo: metaInfo || await (0, _utils.question)('输入自定义的 meta info:')
|
|
147
94
|
});
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
95
|
+
// TODO local diff
|
|
96
|
+
(0, _utils.saveToLocal)(fn, `${appId}/ppk/${id}.ppk`);
|
|
97
|
+
console.log(`已成功上传新热更包(id: ${id})`);
|
|
98
|
+
const v = await (0, _utils.question)('是否现在将此热更应用到原生包上?(Y/N)');
|
|
99
|
+
if (v.toLowerCase() === 'y') {
|
|
100
|
+
await this.update({
|
|
101
|
+
args: [],
|
|
102
|
+
options: {
|
|
103
|
+
versionId: id,
|
|
104
|
+
platform
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
versions: async function({ options }) {
|
|
110
|
+
const platform = (0, _app.checkPlatform)(options.platform || await (0, _utils.question)('平台(ios/android):'));
|
|
111
|
+
const { appId } = await (0, _app.getSelectedApp)(platform);
|
|
112
|
+
await listVersions(appId);
|
|
113
|
+
},
|
|
114
|
+
update: async function({ args, options }) {
|
|
115
|
+
const platform = (0, _app.checkPlatform)(options.platform || await (0, _utils.question)('平台(ios/android):'));
|
|
116
|
+
const { appId } = await (0, _app.getSelectedApp)(platform);
|
|
117
|
+
let versionId = options.versionId || (await chooseVersion(appId)).id;
|
|
118
|
+
if (versionId === 'null') {
|
|
119
|
+
versionId = null;
|
|
120
|
+
}
|
|
121
|
+
let pkgId;
|
|
122
|
+
let pkgVersion = options.packageVersion;
|
|
123
|
+
let minPkgVersion = options.minPackageVersion;
|
|
124
|
+
let maxPkgVersion = options.maxPackageVersion;
|
|
125
|
+
let rollout = options.rollout;
|
|
126
|
+
if (rollout !== undefined) {
|
|
127
|
+
try {
|
|
128
|
+
rollout = parseInt(rollout);
|
|
129
|
+
} catch (e) {
|
|
130
|
+
throw new Error('rollout 必须是 1-100 的整数');
|
|
131
|
+
}
|
|
132
|
+
if (rollout < 1 || rollout > 100) {
|
|
133
|
+
throw new Error('rollout 必须是 1-100 的整数');
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
if (minPkgVersion) {
|
|
137
|
+
minPkgVersion = String(minPkgVersion).trim();
|
|
138
|
+
const { data } = await (0, _api.get)(`/app/${appId}/package/list?limit=1000`);
|
|
139
|
+
const pkgs = data.filter((d)=>(0, _compareversions.compare)(d.name, minPkgVersion, '>='));
|
|
140
|
+
if (pkgs.length === 0) {
|
|
141
|
+
throw new Error(`未查询到 >= ${minPkgVersion} 的原生版本`);
|
|
142
|
+
}
|
|
143
|
+
if (rollout) {
|
|
144
|
+
const rolloutConfig = {};
|
|
145
|
+
for (const pkg of pkgs){
|
|
146
|
+
rolloutConfig[pkg.name] = rollout;
|
|
147
|
+
}
|
|
148
|
+
await (0, _api.put)(`/app/${appId}/version/${versionId}`, {
|
|
149
|
+
config: {
|
|
150
|
+
rollout: rolloutConfig
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
console.log(`已在原生版本 ${pkgs.map((p)=>p.name).join(', ')} 上设置灰度发布 ${rollout}% 热更版本 ${versionId}`);
|
|
154
|
+
}
|
|
155
|
+
for (const pkg of pkgs){
|
|
156
|
+
await (0, _api.put)(`/app/${appId}/package/${pkg.id}`, {
|
|
157
|
+
versionId
|
|
158
|
+
});
|
|
159
|
+
console.log(`已将热更版本 ${versionId} 绑定到原生版本 ${pkg.name}`);
|
|
160
|
+
}
|
|
161
|
+
console.log(`操作完成,共已绑定 ${pkgs.length} 个原生版本`);
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
if (maxPkgVersion) {
|
|
165
|
+
maxPkgVersion = String(maxPkgVersion).trim();
|
|
166
|
+
const { data } = await (0, _api.get)(`/app/${appId}/package/list?limit=1000`);
|
|
167
|
+
const pkgs = data.filter((d)=>(0, _compareversions.compare)(d.name, maxPkgVersion, '<='));
|
|
168
|
+
if (pkgs.length === 0) {
|
|
169
|
+
throw new Error(`未查询到 <= ${maxPkgVersion} 的原生版本`);
|
|
170
|
+
}
|
|
171
|
+
if (rollout) {
|
|
172
|
+
const rolloutConfig = {};
|
|
173
|
+
for (const pkg of pkgs){
|
|
174
|
+
rolloutConfig[pkg.name] = rollout;
|
|
175
|
+
}
|
|
176
|
+
await (0, _api.put)(`/app/${appId}/version/${versionId}`, {
|
|
177
|
+
config: {
|
|
178
|
+
rollout: rolloutConfig
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
console.log(`已在原生版本 ${pkgs.map((p)=>p.name).join(', ')} 上设置灰度发布 ${rollout}% 热更版本 ${versionId}`);
|
|
182
|
+
}
|
|
183
|
+
for (const pkg of pkgs){
|
|
184
|
+
await (0, _api.put)(`/app/${appId}/package/${pkg.id}`, {
|
|
185
|
+
versionId
|
|
186
|
+
});
|
|
187
|
+
console.log(`已将热更版本 ${versionId} 绑定到原生版本 ${pkg.name}`);
|
|
188
|
+
}
|
|
189
|
+
console.log(`操作完成,共已绑定 ${pkgs.length} 个原生版本`);
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
if (pkgVersion) {
|
|
193
|
+
pkgVersion = pkgVersion.trim();
|
|
194
|
+
const { data } = await (0, _api.get)(`/app/${appId}/package/list?limit=1000`);
|
|
195
|
+
const pkg = data.find((d)=>d.name === pkgVersion);
|
|
196
|
+
if (pkg) {
|
|
197
|
+
pkgId = pkg.id;
|
|
198
|
+
} else {
|
|
199
|
+
throw new Error(`未查询到匹配原生版本:${pkgVersion}`);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
if (!pkgId) {
|
|
203
|
+
pkgId = options.packageId || (await (0, _package.choosePackage)(appId)).id;
|
|
204
|
+
}
|
|
205
|
+
if (!pkgId) {
|
|
206
|
+
throw new Error('请提供 packageId 或 packageVersion 参数');
|
|
207
|
+
}
|
|
208
|
+
if (rollout) {
|
|
209
|
+
if (!pkgVersion) {
|
|
210
|
+
const { data } = await (0, _api.get)(`/app/${appId}/package/list?limit=1000`);
|
|
211
|
+
const pkg = data.find((d)=>d.id === pkgId);
|
|
212
|
+
if (pkg) {
|
|
213
|
+
pkgVersion = pkg.name;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
await (0, _api.put)(`/app/${appId}/version/${versionId}`, {
|
|
217
|
+
config: {
|
|
218
|
+
rollout: {
|
|
219
|
+
[pkgVersion]: rollout
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
console.log(`已将在原生版本 ${pkgVersion} 上设置灰度发布 ${rollout}% 热更版本 ${versionId} `);
|
|
224
|
+
}
|
|
225
|
+
await (0, _api.put)(`/app/${appId}/package/${pkgId}`, {
|
|
226
|
+
versionId
|
|
163
227
|
});
|
|
164
|
-
console.log(
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
228
|
+
console.log(`已将热更版本 ${versionId} 绑定到原生版本 ${pkgVersion}`);
|
|
229
|
+
},
|
|
230
|
+
updateVersionInfo: async function({ args, options }) {
|
|
231
|
+
const platform = (0, _app.checkPlatform)(options.platform || await (0, _utils.question)('平台(ios/android):'));
|
|
232
|
+
const { appId } = await (0, _app.getSelectedApp)(platform);
|
|
233
|
+
const versionId = options.versionId || (await chooseVersion(appId)).id;
|
|
234
|
+
const updateParams = {};
|
|
235
|
+
options.name && (updateParams.name = options.name);
|
|
236
|
+
options.description && (updateParams.description = options.description);
|
|
237
|
+
options.metaInfo && (updateParams.metaInfo = options.metaInfo);
|
|
238
|
+
await (0, _api.put)(`/app/${appId}/version/${versionId}`, updateParams);
|
|
239
|
+
console.log('操作成功');
|
|
175
240
|
}
|
|
176
|
-
|
|
177
|
-
versionId
|
|
178
|
-
});
|
|
179
|
-
console.log('操作成功');
|
|
180
|
-
},
|
|
181
|
-
updateVersionInfo: async function ({ args, options }) {
|
|
182
|
-
const platform = (0, _app.checkPlatform)(options.platform || (await (0, _utils.question)('平台(ios/android):')));
|
|
183
|
-
const { appId } = await (0, _app.getSelectedApp)(platform);
|
|
184
|
-
const versionId = options.versionId || (await chooseVersion(appId)).id;
|
|
185
|
-
|
|
186
|
-
const updateParams = {};
|
|
187
|
-
options.name && (updateParams.name = options.name);
|
|
188
|
-
options.description && (updateParams.description = options.description);
|
|
189
|
-
options.metaInfo && (updateParams.metaInfo = options.metaInfo);
|
|
190
|
-
await (0, _api.put)(`/app/${appId}/version/${versionId}`, updateParams);
|
|
191
|
-
console.log('操作成功');
|
|
192
|
-
}
|
|
193
|
-
};
|
|
241
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-update-cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.31.0",
|
|
4
4
|
"description": "Command tools for javaScript updater with `pushy` service for react native apps.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
"cli.json"
|
|
13
13
|
],
|
|
14
14
|
"scripts": {
|
|
15
|
-
"
|
|
15
|
+
"build": "swc src -d lib --strip-leading-paths",
|
|
16
|
+
"prepublish": "npm run build && chmod +x lib/index.js"
|
|
16
17
|
},
|
|
17
18
|
"repository": {
|
|
18
19
|
"type": "git",
|
|
@@ -53,14 +54,14 @@
|
|
|
53
54
|
"yauzl": "^2.10.0",
|
|
54
55
|
"yazl": "2.5.1"
|
|
55
56
|
},
|
|
56
|
-
"devDependencies": {
|
|
57
|
-
"babel-cli": "^6.26.0",
|
|
58
|
-
"babel-plugin-syntax-object-rest-spread": "^6.13.0",
|
|
59
|
-
"babel-plugin-transform-es2015-modules-commonjs": "^6.26.2",
|
|
60
|
-
"babel-plugin-transform-es2015-spread": "^6.22.0",
|
|
61
|
-
"babel-plugin-transform-object-rest-spread": "^6.26.0"
|
|
62
|
-
},
|
|
63
57
|
"engines": {
|
|
64
58
|
"node": ">= 10"
|
|
59
|
+
},
|
|
60
|
+
"devDependencies": {
|
|
61
|
+
"@swc/cli": "^0.4.1-nightly.20240914",
|
|
62
|
+
"@swc/core": "^1.7.36",
|
|
63
|
+
"@types/node": "^22.7.5",
|
|
64
|
+
"oxlint": "^0.9.10",
|
|
65
|
+
"typescript": "^5.6.3"
|
|
65
66
|
}
|
|
66
67
|
}
|
package/src/api.js
CHANGED
|
@@ -74,9 +74,12 @@ async function query(url, options) {
|
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
if (resp.status !== 200) {
|
|
77
|
-
throw Object.assign(
|
|
78
|
-
|
|
79
|
-
|
|
77
|
+
throw Object.assign(
|
|
78
|
+
new Error(json.message || json.error || resp.statusText),
|
|
79
|
+
{
|
|
80
|
+
status: resp.status,
|
|
81
|
+
},
|
|
82
|
+
);
|
|
80
83
|
}
|
|
81
84
|
return json;
|
|
82
85
|
}
|
package/src/bundle.js
CHANGED
|
@@ -33,7 +33,7 @@ async function runReactNativeBundleCommand(
|
|
|
33
33
|
gradleConfig = await checkGradleConfig();
|
|
34
34
|
if (gradleConfig.crunchPngs !== false) {
|
|
35
35
|
console.warn(
|
|
36
|
-
'android的crunchPngs选项似乎尚未禁用(如已禁用则请忽略此提示),这可能导致热更包体积异常增大,具体请参考 https://pushy.reactnative.cn/docs/getting-started.html#%E7%A6%81%E7%94%A8-android-%E7%9A%84-crunch-%E4%BC%98%E5%8C%96 \n',
|
|
36
|
+
'android 的 crunchPngs 选项似乎尚未禁用(如已禁用则请忽略此提示),这可能导致热更包体积异常增大,具体请参考 https://pushy.reactnative.cn/docs/getting-started.html#%E7%A6%81%E7%94%A8-android-%E7%9A%84-crunch-%E4%BC%98%E5%8C%96 \n',
|
|
37
37
|
);
|
|
38
38
|
}
|
|
39
39
|
}
|
|
@@ -177,17 +177,19 @@ async function checkGradleConfig() {
|
|
|
177
177
|
let crunchPngs;
|
|
178
178
|
try {
|
|
179
179
|
const gradleConfig = await g2js.parseFile('android/app/build.gradle');
|
|
180
|
+
crunchPngs = gradleConfig.android.buildTypes.release.crunchPngs;
|
|
180
181
|
const projectConfig = gradleConfig['project.ext.react'];
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
182
|
+
if (projectConfig) {
|
|
183
|
+
for (const packagerConfig of projectConfig) {
|
|
184
|
+
if (
|
|
185
|
+
packagerConfig.includes('enableHermes') &&
|
|
186
|
+
packagerConfig.includes('true')
|
|
187
|
+
) {
|
|
188
|
+
enableHermes = true;
|
|
189
|
+
break;
|
|
190
|
+
}
|
|
188
191
|
}
|
|
189
192
|
}
|
|
190
|
-
crunchPngs = gradleConfig.android.buildTypes.release.crunchPngs;
|
|
191
193
|
} catch (e) {}
|
|
192
194
|
return {
|
|
193
195
|
enableHermes,
|
|
@@ -609,7 +611,6 @@ export const commands = {
|
|
|
609
611
|
const { version, major, minor } = getRNVersion();
|
|
610
612
|
|
|
611
613
|
console.log('Bundling with react-native: ', version);
|
|
612
|
-
printVersionCommand();
|
|
613
614
|
|
|
614
615
|
await runReactNativeBundleCommand(
|
|
615
616
|
bundleName,
|
package/src/utils/index.js
CHANGED
|
@@ -154,11 +154,13 @@ export function printVersionCommand() {
|
|
|
154
154
|
if (pushyVersion) {
|
|
155
155
|
if (semverSatisfies(pushyVersion, '<8.5.1')) {
|
|
156
156
|
console.warn(
|
|
157
|
-
|
|
157
|
+
`当前版本已不再支持,请至少升级到 v8 的最新小版本后重新打包(代码无需改动): npm i react-native-update@8 .
|
|
158
|
+
如有使用安装 apk 的功能,请注意添加所需权限 https://pushy.reactnative.cn/docs/api#async-function-downloadandinstallapkurl`,
|
|
158
159
|
);
|
|
159
160
|
} else if (semverSatisfies(pushyVersion, '9.0.0 - 9.2.0')) {
|
|
160
161
|
console.warn(
|
|
161
|
-
|
|
162
|
+
`当前版本已不再支持,请至少升级到 v9 的最新小版本后重新打包(代码无需改动): npm i react-native-update@9 .
|
|
163
|
+
如有使用安装 apk 的功能,请注意添加所需权限 https://pushy.reactnative.cn/docs/api#async-function-downloadandinstallapkurl`,
|
|
162
164
|
);
|
|
163
165
|
}
|
|
164
166
|
}
|