1
0
mirror of https://gitcode.com/github-mirrors/react-native-update-cli.git synced 2025-09-18 02:16:11 +08:00
Code Issues Packages Projects Releases Wiki Activity GitHub Gitee

Compare commits

..

9 Commits

Author SHA1 Message Date
sunnylqm
f9adc700ed v1.11.0 2023-01-11 23:36:13 +08:00
sunnylqm
dcff16cbb5 support source-map 2023-01-11 23:35:39 +08:00
sunnylqm
2bb8e83010 v1.10.0 2022-07-01 23:08:16 +08:00
sunnylqm
0cfc6e4f0d support rn 69 hermes 2022-07-01 23:02:20 +08:00
sunnylqm
da7bdbfdd2 v1.9.0 2022-06-29 09:42:05 +08:00
sunnylqm
07ee28ba3b add updateVersionInfo 2022-06-29 09:41:44 +08:00
sunnylqm
dae3e4024f v1.8.1 2021-12-24 17:55:15 +08:00
sunnylqm
d673b5736a Fix selectApp id 2021-12-24 17:53:14 +08:00
sunnylqm
732845faad Cleanup headers 2021-10-28 18:01:12 +08:00
7 changed files with 148 additions and 48 deletions

View File

@@ -88,6 +88,29 @@
}
},
"updateVersionInfo": {
"options": {
"platform": {
"hasValue": true
},
"versionId": {
"hasValue": true
},
"name": {
"default": false,
"hasValue": true
},
"description": {
"default": false,
"hasValue": true
},
"metaInfo": {
"default": false,
"hasValue": true
}
}
},
"build": {
"description": "Bundle javascript and copy assets."
},
@@ -117,7 +140,9 @@
"default": ".pushy/output/${platform}.${time}.ppk",
"hasValue": true
},
"verbose": {}
"sourcemap": {
"default": false
}
}
},
"release": {

View File

@@ -1,6 +1,6 @@
{
"name": "react-native-update-cli",
"version": "1.8.0",
"version": "1.11.0",
"description": "Command tools for javaScript updater with `pushy` service for react native apps.",
"main": "index.js",
"bin": {
@@ -36,7 +36,7 @@
"cli-arguments": "^0.2.1",
"filesize-parser": "^1.5.0",
"fs-extra": "8",
"gradle-to-js": "^2.0.0",
"gradle-to-js": "^2.0.1",
"node-fetch": "^2.6.1",
"progress": "^2.0.3",
"read": "^1.0.7",

65
pnpm-lock.yaml generated
View File

@@ -1,4 +1,4 @@
lockfileVersion: 5.3
lockfileVersion: 5.4
specifiers:
app-info-parser: ^1.0.0
@@ -10,7 +10,7 @@ specifiers:
cli-arguments: ^0.2.1
filesize-parser: ^1.5.0
fs-extra: '8'
gradle-to-js: ^2.0.0
gradle-to-js: ^2.0.1
node-fetch: ^2.6.1
progress: ^2.0.3
read: ^1.0.7
@@ -26,7 +26,7 @@ dependencies:
cli-arguments: 0.2.1
filesize-parser: 1.5.0
fs-extra: 8.1.0
gradle-to-js: 2.0.0
gradle-to-js: 2.0.1
node-fetch: 2.6.5
progress: 2.0.3
read: 1.0.7
@@ -58,6 +58,22 @@ packages:
defer-to-connect: 1.1.3
dev: false
/@types/keyv/3.1.4:
resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==}
dependencies:
'@types/node': 18.0.0
dev: false
/@types/node/18.0.0:
resolution: {integrity: sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA==}
dev: false
/@types/responselike/1.0.0:
resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==}
dependencies:
'@types/node': 18.0.0
dev: false
/ajv/6.12.6:
resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
dependencies:
@@ -223,6 +239,8 @@ packages:
v8flags: 2.1.1
optionalDependencies:
chokidar: 1.7.0
transitivePeerDependencies:
- supports-color
dev: true
/babel-code-frame/6.26.0:
@@ -255,6 +273,8 @@ packages:
private: 0.1.8
slash: 1.0.0
source-map: 0.5.7
transitivePeerDependencies:
- supports-color
dev: true
/babel-generator/6.26.1:
@@ -275,6 +295,8 @@ packages:
dependencies:
babel-runtime: 6.26.0
babel-template: 6.26.0
transitivePeerDependencies:
- supports-color
dev: true
/babel-messages/6.23.0:
@@ -294,6 +316,8 @@ packages:
babel-runtime: 6.26.0
babel-template: 6.26.0
babel-types: 6.26.0
transitivePeerDependencies:
- supports-color
dev: true
/babel-plugin-transform-es2015-spread/6.22.0:
@@ -334,6 +358,8 @@ packages:
lodash: 4.17.21
mkdirp: 0.5.5
source-map-support: 0.4.18
transitivePeerDependencies:
- supports-color
dev: true
/babel-runtime/6.26.0:
@@ -351,6 +377,8 @@ packages:
babel-types: 6.26.0
babylon: 6.18.0
lodash: 4.17.21
transitivePeerDependencies:
- supports-color
dev: true
/babel-traverse/6.26.0:
@@ -365,6 +393,8 @@ packages:
globals: 9.18.0
invariant: 2.2.4
lodash: 4.17.21
transitivePeerDependencies:
- supports-color
dev: true
/babel-types/6.26.0:
@@ -479,6 +509,8 @@ packages:
snapdragon-node: 2.1.1
split-string: 3.1.0
to-regex: 3.0.2
transitivePeerDependencies:
- supports-color
dev: true
optional: true
@@ -592,7 +624,7 @@ packages:
dev: false
/chokidar/1.7.0:
resolution: {integrity: sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=}
resolution: {integrity: sha512-mk8fAWcRUOxY7btlLtitj3A45jOwSAxH4tOFOoEGbVsl6cL6pPMWUy7dwZ/canfj3QEdP6FHSnf/l1c6/WkzVg==}
deprecated: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.
requiresBuild: true
dependencies:
@@ -606,6 +638,8 @@ packages:
readdirp: 2.2.1
optionalDependencies:
fsevents: 1.2.13
transitivePeerDependencies:
- supports-color
dev: true
optional: true
@@ -786,6 +820,11 @@ packages:
/debug/2.6.9:
resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
peerDependencies:
supports-color: '*'
peerDependenciesMeta:
supports-color:
optional: true
dependencies:
ms: 2.0.0
dev: true
@@ -969,6 +1008,8 @@ packages:
regex-not: 1.0.2
snapdragon: 0.8.2
to-regex: 3.0.2
transitivePeerDependencies:
- supports-color
dev: true
optional: true
@@ -1021,6 +1062,8 @@ packages:
regex-not: 1.0.2
snapdragon: 0.8.2
to-regex: 3.0.2
transitivePeerDependencies:
- supports-color
dev: true
optional: true
@@ -1249,6 +1292,8 @@ packages:
dependencies:
'@sindresorhus/is': 0.14.0
'@szmarczak/http-timer': 1.1.2
'@types/keyv': 3.1.4
'@types/responselike': 1.0.0
cacheable-request: 6.1.0
decompress-response: 3.3.0
duplexer3: 0.1.4
@@ -1263,8 +1308,8 @@ packages:
/graceful-fs/4.2.8:
resolution: {integrity: sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==}
/gradle-to-js/2.0.0:
resolution: {integrity: sha512-eoYJiSoreHG0cS5aUmv7ISJhajuULlqdqG3QKVti6x1EFkBXE8rGH6ipGKWEesXpCkfNgzBrhzo5ztIH1JWZMw==}
/gradle-to-js/2.0.1:
resolution: {integrity: sha512-is3hDn9zb8XXnjbEeAEIqxTpLHUiGBqjegLmXPuyMBfKAggpadWFku4/AP8iYAGBX6qR9/5UIUIp47V0XI3aMw==}
hasBin: true
dependencies:
lodash.merge: 4.6.2
@@ -1935,6 +1980,8 @@ packages:
regex-not: 1.0.2
snapdragon: 0.8.2
to-regex: 3.0.2
transitivePeerDependencies:
- supports-color
dev: true
optional: true
@@ -2013,6 +2060,8 @@ packages:
regex-not: 1.0.2
snapdragon: 0.8.2
to-regex: 3.0.2
transitivePeerDependencies:
- supports-color
dev: true
optional: true
@@ -2306,6 +2355,8 @@ packages:
graceful-fs: 4.2.8
micromatch: 3.1.10
readable-stream: 2.3.7
transitivePeerDependencies:
- supports-color
dev: true
optional: true
@@ -2527,6 +2578,8 @@ packages:
source-map: 0.5.7
source-map-resolve: 0.5.3
use: 3.1.1
transitivePeerDependencies:
- supports-color
dev: true
optional: true

View File

@@ -159,10 +159,6 @@ async function uploadFile(fn, key) {
realUrl,
{
formData,
headers: {
'User-Agent': userAgent,
'X-AccessToken': session ? session.token : '',
},
},
(err, resp, body) => {
if (err) {

View File

@@ -100,7 +100,7 @@ export const commands = {
const platform = checkPlatform(
options.platform || (await question('平台(ios/android):')),
);
const id = args[0] || (await chooseApp(platform)).id;
const id = args[0] ? parseInt(args[0]) : (await chooseApp(platform)).id;
let updateInfo = {};
if (fs.existsSync('update.json')) {

View File

@@ -94,8 +94,15 @@ async function runReactNativeBundleCommand(
),
);
} else {
if (gradleConfig.enableHermes) {
await compileHermesByteCode(bundleName, outputFolder);
if (
(platform === 'android' && gradleConfig.enableHermes) ||
(platform === 'ios' && fs.existsSync('ios/Pods/hermes-engine'))
) {
await compileHermesByteCode(
bundleName,
outputFolder,
sourcemapOutput,
);
}
resolve(null);
}
@@ -132,28 +139,38 @@ async function checkGradleConfig() {
};
}
async function compileHermesByteCode(bundleName, outputFolder) {
async function compileHermesByteCode(
bundleName,
outputFolder,
sourcemapOutput,
) {
console.log(`Hermes enabled, now compiling to hermes bytecode:\n`);
const hermesPackage = fs.existsSync('node_modules/hermes-engine')
? 'node_modules/hermes-engine' // 0.2+
: 'node_modules/hermesvm'; // < 0.2
const hermesPath = `${hermesPackage}/${getHermesOSBin()}`;
// >= rn 0.69
let hermesCommand = `node_modules/react-native/sdks/hermesc/${getHermesOSBin()}/hermesc`;
// < rn 0.69
if (!fs.existsSync(hermesCommand)) {
const hermesPackage = fs.existsSync('node_modules/hermes-engine')
? 'node_modules/hermes-engine' // 0.2+
: 'node_modules/hermesvm'; // < 0.2
const hermesPath = `${hermesPackage}/${getHermesOSBin()}`;
const hermesCommand = fs.existsSync(`${hermesPath}/hermesc`)
? `${hermesPath}/hermesc` // 0.5+
: `${hermesPath}/hermes`; // < 0.5
spawnSync(
path.join.apply(null, hermesCommand.split('/')),
[
'-emit-binary',
'-out',
path.join(outputFolder, bundleName),
path.join(outputFolder, bundleName),
'-O',
],
{ stdio: 'ignore' },
);
hermesCommand = fs.existsSync(`${hermesPath}/hermesc`)
? `${hermesPath}/hermesc` // 0.5+
: `${hermesPath}/hermes`; // < 0.5
}
const args = [
'-emit-binary',
'-out',
path.join(outputFolder, bundleName),
path.join(outputFolder, bundleName),
'-O',
];
if (sourcemapOutput) {
args.push('-output-source-map');
}
spawnSync(path.join.apply(null, hermesCommand.split('/')), args, {
stdio: 'ignore',
});
}
async function pack(dir, output) {
@@ -514,19 +531,13 @@ export const commands = {
options.platform || (await question('平台(ios/android):')),
);
let {
bundleName,
entryFile,
intermediaDir,
output,
dev,
verbose,
} = translateOptions({
...options,
platform,
});
let { bundleName, entryFile, intermediaDir, output, dev, sourcemap } =
translateOptions({
...options,
platform,
});
// const sourcemapOutput = path.join(intermediaDir, bundleName + ".map");
const sourcemapOutput = path.join(intermediaDir, bundleName + '.map');
const realOutput = output.replace(/\$\{time\}/g, '' + Date.now());
@@ -545,6 +556,7 @@ export const commands = {
entryFile,
intermediaDir,
platform,
sourcemap ? sourcemapOutput : '',
);
await pack(path.resolve(intermediaDir), realOutput);

View File

@@ -149,4 +149,18 @@ export const commands = {
});
console.log('操作成功');
},
updateVersionInfo: async function ({ args, options }) {
const platform = checkPlatform(
options.platform || (await question('平台(ios/android):')),
);
const { appId } = await getSelectedApp(platform);
const versionId = options.versionId || (await chooseVersion(appId)).id;
const updateParams = {};
options.name && (updateParams.name = options.name);
options.description && (updateParams.description = options.description);
options.metaInfo && (updateParams.metaInfo = options.metaInfo);
await put(`/app/${appId}/version/${versionId}`, updateParams);
console.log('操作成功');
},
};