jsir 2.3.1 → 2.3.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.
- package/cmd/oaa.js +38 -35
- package/deps/evalCode.js +4 -2
- package/deps/setting.js +7 -1
- package/deps/util.js +19 -20
- package/package.json +1 -1
package/cmd/oaa.js
CHANGED
|
@@ -11,7 +11,7 @@ const {
|
|
|
11
11
|
createConsole, setTips, delTips,
|
|
12
12
|
getEditor, errorStr, getConfigDir,
|
|
13
13
|
getFullPath, parseUniqueName, toUniqueName, isJsirFileName, toJsirFileName,
|
|
14
|
-
|
|
14
|
+
getAlias, wrapperJsirText, eia
|
|
15
15
|
} = $lib;
|
|
16
16
|
const _args = process.argv.slice(2).map(trim);
|
|
17
17
|
const evalCode = require('../deps/evalCode')
|
|
@@ -138,7 +138,7 @@ function getFileOpenExe(fileName) {
|
|
|
138
138
|
|
|
139
139
|
function checkWorkspaces() {
|
|
140
140
|
let localWorkspace = _libDataDir + '/local';
|
|
141
|
-
|
|
141
|
+
setting.workspaceMap = {
|
|
142
142
|
'local': localWorkspace
|
|
143
143
|
}
|
|
144
144
|
mkdir(localWorkspace)
|
|
@@ -149,15 +149,15 @@ function checkWorkspaces() {
|
|
|
149
149
|
continue
|
|
150
150
|
}
|
|
151
151
|
if (fs.existsSync(workspace)) {
|
|
152
|
-
|
|
152
|
+
setting.workspaceMap[space] = workspace;
|
|
153
153
|
}
|
|
154
154
|
}
|
|
155
|
-
arrayDataFile(_workspaceConfigFile, () => Object.values(
|
|
156
|
-
initWorkspace()
|
|
155
|
+
arrayDataFile(_workspaceConfigFile, () => Object.values(setting.workspaceMap))
|
|
157
156
|
}
|
|
158
157
|
|
|
159
158
|
async function start() {
|
|
160
159
|
checkWorkspaces()
|
|
160
|
+
initWorkspace()
|
|
161
161
|
|
|
162
162
|
lastFilterArg = getConfig("lastFilterArg");
|
|
163
163
|
_cmdMap = objDataFile(_cmdMapFile);
|
|
@@ -288,7 +288,7 @@ async function nextLine(callback, promptStr, hidden) {
|
|
|
288
288
|
}
|
|
289
289
|
|
|
290
290
|
function defaultPromptStr(showKey = false) {
|
|
291
|
-
let tips = [getTipStr(showKey),
|
|
291
|
+
let tips = [getTipStr(showKey), setting.defaultSpace].filter(i => i).join(':') + `> `;
|
|
292
292
|
_isTipsDoneShowKey = showKey;
|
|
293
293
|
return tips;
|
|
294
294
|
}
|
|
@@ -346,8 +346,8 @@ function initRl(callback, promptStr, hidden) {
|
|
|
346
346
|
|
|
347
347
|
function getTipStr(showKey = false) {
|
|
348
348
|
let items = [];
|
|
349
|
-
for (let key of Object.keys(
|
|
350
|
-
let val =
|
|
349
|
+
for (let key of Object.keys(setting.tips)) {
|
|
350
|
+
let val = setting.tips[key].map(i => {
|
|
351
351
|
let item = trim(i)
|
|
352
352
|
if (item.indexOf(',') !== -1) {
|
|
353
353
|
item = `[${item}]`;
|
|
@@ -872,14 +872,14 @@ function help(filterFn) {
|
|
|
872
872
|
}
|
|
873
873
|
|
|
874
874
|
function delTipsByIndex(idxs) {
|
|
875
|
-
let keys = Object.keys(
|
|
875
|
+
let keys = Object.keys(setting.tips)
|
|
876
876
|
let indexKeyMap = {}
|
|
877
877
|
for(let i = 1;i<=keys.length;i++) {
|
|
878
878
|
indexKeyMap[i] = keys[i - 1]
|
|
879
879
|
}
|
|
880
880
|
let params = []
|
|
881
881
|
for (const index of idxs) {
|
|
882
|
-
if (
|
|
882
|
+
if (setting.tips.hasOwnProperty(index)) {
|
|
883
883
|
params.push(index)
|
|
884
884
|
} else if (indexKeyMap[Number(index)]) {
|
|
885
885
|
params.push(indexKeyMap[Number(index)])
|
|
@@ -895,7 +895,7 @@ function delTipsByIndex(idxs) {
|
|
|
895
895
|
}
|
|
896
896
|
|
|
897
897
|
function getPackageVersion(space, name) {
|
|
898
|
-
let moduleDir =
|
|
898
|
+
let moduleDir = setting.workspaceMap[space] + '/node_modules'
|
|
899
899
|
let dir = moduleDir + "/" + name;
|
|
900
900
|
if (fs.existsSync(dir) && fs.existsSync(dir + '/package.json')) {
|
|
901
901
|
return require(dir + '/package.json').version;
|
|
@@ -908,12 +908,12 @@ function copyToSpace(uniqueName) {
|
|
|
908
908
|
let path = getFullPath(uniqueName)
|
|
909
909
|
let text = String(fs.readFileSync(path))
|
|
910
910
|
let fileName = parseUniqueName(uniqueName)[1];
|
|
911
|
-
let targetPath =
|
|
911
|
+
let targetPath = setting.workspaceMap[setting.defaultSpace] + '/' + fileName;
|
|
912
912
|
if (fs.existsSync(targetPath)) {
|
|
913
|
-
console.warn(`${fileName} already exist in ${
|
|
913
|
+
console.warn(`${fileName} already exist in ${setting.defaultSpace}`)
|
|
914
914
|
} else {
|
|
915
915
|
fs.writeFileSync(targetPath, text)
|
|
916
|
-
console.info(`get ${uniqueName} to ${
|
|
916
|
+
console.info(`get ${uniqueName} to ${setting.defaultSpace}`)
|
|
917
917
|
}
|
|
918
918
|
}
|
|
919
919
|
|
|
@@ -1076,7 +1076,7 @@ const keywordDef = {
|
|
|
1076
1076
|
} else {
|
|
1077
1077
|
let pair = parseUniqueName(uniqueName)
|
|
1078
1078
|
let newName =trim(args.slice(1).join(" "))
|
|
1079
|
-
rename(
|
|
1079
|
+
rename(setting.workspaceMap[pair[0]], pair[1], toJsirFileName(newName), true)
|
|
1080
1080
|
}
|
|
1081
1081
|
},
|
|
1082
1082
|
args: {
|
|
@@ -1165,8 +1165,8 @@ const keywordDef = {
|
|
|
1165
1165
|
return;
|
|
1166
1166
|
}
|
|
1167
1167
|
|
|
1168
|
-
let aFiles = fs.readdirSync(
|
|
1169
|
-
let bFiles = fs.readdirSync(
|
|
1168
|
+
let aFiles = fs.readdirSync(setting.workspaceMap[aSpace]).filter(isJsirFileName)
|
|
1169
|
+
let bFiles = fs.readdirSync(setting.workspaceMap[bSpace]).filter(isJsirFileName)
|
|
1170
1170
|
|
|
1171
1171
|
let result = compareMode[mode](aSpace, bSpace, aFiles, bFiles);
|
|
1172
1172
|
resetCmdMap(arrayToCmdMap(result))
|
|
@@ -1208,8 +1208,8 @@ const keywordDef = {
|
|
|
1208
1208
|
Object.keys(packages).forEach(key => {
|
|
1209
1209
|
let info = packages[key];
|
|
1210
1210
|
info.version = getPackageVersion(info.space, info.name)
|
|
1211
|
-
if (
|
|
1212
|
-
info.loaded =
|
|
1211
|
+
if (setting.packages.hasOwnProperty(info.name)) {
|
|
1212
|
+
info.loaded = setting.packages[info.name]
|
|
1213
1213
|
}
|
|
1214
1214
|
if (info.loaded && info.loaded !== info.space) {
|
|
1215
1215
|
let version = getPackageVersion(info.loaded, info.name)
|
|
@@ -1252,14 +1252,14 @@ const keywordDef = {
|
|
|
1252
1252
|
let newWorkspace = args.join(' ')
|
|
1253
1253
|
let isSwitch = false
|
|
1254
1254
|
if (newWorkspace) {
|
|
1255
|
-
if (
|
|
1255
|
+
if (setting.workspaceMap[newWorkspace]) {
|
|
1256
1256
|
isSwitch = true;
|
|
1257
1257
|
initWorkspace(newWorkspace)
|
|
1258
1258
|
} else if (newWorkspace.startsWith('-')) {
|
|
1259
1259
|
let name = newWorkspace.replace(/^-\s*/, '');
|
|
1260
1260
|
arrayDataFile(_workspaceConfigFile, arr => arr.filter(path => name !== getSpaceFromDir(path)))
|
|
1261
1261
|
} else if (newWorkspace.startsWith("/")) {
|
|
1262
|
-
let workspaces = Object.values(
|
|
1262
|
+
let workspaces = Object.values(setting.workspaceMap)
|
|
1263
1263
|
workspaces.push(newWorkspace)
|
|
1264
1264
|
arrayDataFile(_workspaceConfigFile, () => workspaces)
|
|
1265
1265
|
} else {
|
|
@@ -1267,10 +1267,11 @@ const keywordDef = {
|
|
|
1267
1267
|
}
|
|
1268
1268
|
}
|
|
1269
1269
|
checkWorkspaces()
|
|
1270
|
-
|
|
1270
|
+
initWorkspace(setting.defaultSpace)
|
|
1271
|
+
let workspaces = Object.values(setting.workspaceMap)
|
|
1271
1272
|
let items = workspaces.map((path, index) => {
|
|
1272
1273
|
return {
|
|
1273
|
-
name: (getSpaceFromDir(path) ===
|
|
1274
|
+
name: (getSpaceFromDir(path) === setting.defaultSpace ? '*':' ') + getSpaceFromDir(path),
|
|
1274
1275
|
path
|
|
1275
1276
|
}
|
|
1276
1277
|
})
|
|
@@ -1370,7 +1371,7 @@ const keywordDef = {
|
|
|
1370
1371
|
if (args.length > 1) {
|
|
1371
1372
|
_args = args.slice(1)
|
|
1372
1373
|
}
|
|
1373
|
-
await eia(`cd "${
|
|
1374
|
+
await eia(`cd "${setting.workspaceMap[setting.defaultSpace]}";${cmd}`, _args, true)
|
|
1374
1375
|
},
|
|
1375
1376
|
short: 'E'
|
|
1376
1377
|
},
|
|
@@ -1389,12 +1390,12 @@ const keywordDef = {
|
|
|
1389
1390
|
}
|
|
1390
1391
|
}
|
|
1391
1392
|
let suffix = 'log'
|
|
1392
|
-
let cmdStr = 'less -R'
|
|
1393
|
+
let cmdStr = 'less -R +G'
|
|
1393
1394
|
if (type.indexOf("e") !== -1) {
|
|
1394
1395
|
suffix = 'error'
|
|
1395
1396
|
}
|
|
1396
1397
|
if (type.indexOf("t") !== -1) {
|
|
1397
|
-
cmdStr = '
|
|
1398
|
+
cmdStr = 'less -R +F'
|
|
1398
1399
|
}
|
|
1399
1400
|
path = path + '.' + suffix;
|
|
1400
1401
|
if (!fs.existsSync(path)) {
|
|
@@ -1623,13 +1624,13 @@ function getJsirFileSuffix(name) {
|
|
|
1623
1624
|
function initWorkspace(space) {
|
|
1624
1625
|
let current = getConfig("workspace");
|
|
1625
1626
|
let workspace = space || current || 'local'
|
|
1626
|
-
if (
|
|
1627
|
+
if (!setting.workspaceMap[workspace]) {
|
|
1627
1628
|
workspace = 'local'
|
|
1628
1629
|
}
|
|
1629
|
-
if (workspace !== current) {
|
|
1630
|
+
if (workspace !== current && _noAppendNextLine) {
|
|
1630
1631
|
setConfig("workspace", workspace)
|
|
1631
1632
|
}
|
|
1632
|
-
|
|
1633
|
+
setting.defaultSpace = workspace;
|
|
1633
1634
|
}
|
|
1634
1635
|
|
|
1635
1636
|
function filterCmdAndList(arg) {
|
|
@@ -1655,10 +1656,10 @@ function filterCmd(arg){
|
|
|
1655
1656
|
let spaceName
|
|
1656
1657
|
if (arg.indexOf('/') !== -1) {
|
|
1657
1658
|
let index = arg.indexOf('/');
|
|
1658
|
-
spaceName = trim(arg.substring(0, index)) ||
|
|
1659
|
+
spaceName = trim(arg.substring(0, index)) || setting.defaultSpace
|
|
1659
1660
|
arg = trim(arg.substring(index + 1))
|
|
1660
1661
|
}
|
|
1661
|
-
for (let workspace of Object.values(
|
|
1662
|
+
for (let workspace of Object.values(setting.workspaceMap)) {
|
|
1662
1663
|
let spaceTmp = getSpaceFromDir(workspace);
|
|
1663
1664
|
if (!spaceName || spaceName === spaceTmp) {
|
|
1664
1665
|
cmds.push(..._filterCmd(workspace, arg));
|
|
@@ -2063,7 +2064,7 @@ async function evalText($text = '', $cmdName = '', $args = []) {
|
|
|
2063
2064
|
let pair = parseUniqueName($cmdName)
|
|
2064
2065
|
currSpace = pair[0]
|
|
2065
2066
|
} else {
|
|
2066
|
-
currSpace =
|
|
2067
|
+
currSpace = setting.defaultSpace
|
|
2067
2068
|
}
|
|
2068
2069
|
let $requires = async (...matchItems) => {
|
|
2069
2070
|
let result = []
|
|
@@ -2080,19 +2081,21 @@ async function evalText($text = '', $cmdName = '', $args = []) {
|
|
|
2080
2081
|
$require, $requires,
|
|
2081
2082
|
nextLine, nextText,
|
|
2082
2083
|
wrapperInput, filterCmd,
|
|
2083
|
-
currSpace,
|
|
2084
|
+
currSpace, setting.defaultSpace, setting.workspaceMap,
|
|
2084
2085
|
$homeDir, $lib, _cmdMap);
|
|
2085
2086
|
}
|
|
2086
2087
|
|
|
2087
2088
|
function clearFileLock() {
|
|
2088
|
-
let fileLockMap = getOr(global, `$fileLock`, {})
|
|
2089
2089
|
for (let file of Object.keys(fileLockMap)) {
|
|
2090
2090
|
fp.rmdir(file)
|
|
2091
|
-
delete
|
|
2091
|
+
delete setting.fileLock[file]
|
|
2092
2092
|
}
|
|
2093
2093
|
}
|
|
2094
2094
|
|
|
2095
2095
|
function sigExit() {
|
|
2096
|
+
if (!setting.sigExit) {
|
|
2097
|
+
return;
|
|
2098
|
+
}
|
|
2096
2099
|
if (_noAppendNextLine) {
|
|
2097
2100
|
delTips();
|
|
2098
2101
|
clearFileLock();
|
package/deps/evalCode.js
CHANGED
|
@@ -3,7 +3,7 @@ module.exports = async ($text = '', $cmdName = '', $args = [],
|
|
|
3
3
|
$require, $requires,
|
|
4
4
|
$nextLine, $nextText,
|
|
5
5
|
$enter, $filterCmd,
|
|
6
|
-
$currentSpace,
|
|
6
|
+
$currentSpace, $defaultSpace, $workspaceMap,
|
|
7
7
|
$homeDir, $lib,
|
|
8
8
|
$cmdMap) => {
|
|
9
9
|
const $defArgs = () => $args;
|
|
@@ -26,13 +26,15 @@ module.exports = async ($text = '', $cmdName = '', $args = [],
|
|
|
26
26
|
const $errorTag = $lib.errorTag;
|
|
27
27
|
|
|
28
28
|
const $context = {
|
|
29
|
+
$defArgs,
|
|
29
30
|
$data, $config, $file,
|
|
30
31
|
$require, $requires, $import,
|
|
31
32
|
$text, $cmdName, $args,
|
|
32
33
|
$nextLine, $nextText,
|
|
33
34
|
$setTips, $delTips,
|
|
34
35
|
$enter, $filterCmd,
|
|
35
|
-
$currentSpace, $
|
|
36
|
+
$currentSpace, $defaultSpace, $workspaceMap,
|
|
37
|
+
$homeDir, $lib, $cmdMap
|
|
36
38
|
}
|
|
37
39
|
let console = $lib.createConsole($cmdName);
|
|
38
40
|
return await eval(`(async ()=>{${$text};
|
package/deps/setting.js
CHANGED
package/deps/util.js
CHANGED
|
@@ -16,11 +16,7 @@ const _types = setting.fileType
|
|
|
16
16
|
const _typeKeys = Object.keys(_types)
|
|
17
17
|
|
|
18
18
|
global.$newInput = false
|
|
19
|
-
global.$workspaceMap = {}
|
|
20
|
-
global.$defaultSpace = 'local'
|
|
21
19
|
global.$newError = false
|
|
22
|
-
global.$tips = {}
|
|
23
|
-
global.$packages = {}
|
|
24
20
|
|
|
25
21
|
let libDataDir;
|
|
26
22
|
let lockDir;
|
|
@@ -256,7 +252,7 @@ function getFullPath(name) {
|
|
|
256
252
|
}
|
|
257
253
|
let uniqueName = toUniqueName(name)
|
|
258
254
|
let pair = parseUniqueName(uniqueName)
|
|
259
|
-
let space =
|
|
255
|
+
let space = setting.workspaceMap[pair[0]]
|
|
260
256
|
if (!space) {
|
|
261
257
|
return ''
|
|
262
258
|
}
|
|
@@ -282,10 +278,10 @@ function toUniqueName(name, space) {
|
|
|
282
278
|
} else if (name.indexOf('/') !== -1) {
|
|
283
279
|
uniqueName = name;
|
|
284
280
|
} else {
|
|
285
|
-
uniqueName = (space ||
|
|
281
|
+
uniqueName = (space || setting.defaultSpace) + '/' + name;
|
|
286
282
|
}
|
|
287
283
|
let pair = parseUniqueName(uniqueName);
|
|
288
|
-
return (pair[0] || space ||
|
|
284
|
+
return (pair[0] || space || setting.defaultSpace) + '/' + toJsirFileName(pair[1])
|
|
289
285
|
}
|
|
290
286
|
|
|
291
287
|
function toJsirFileName(name) {
|
|
@@ -700,7 +696,7 @@ function iarrayDataFile(fileName, fn, fmt) {
|
|
|
700
696
|
}
|
|
701
697
|
function getInitName(fileName) {
|
|
702
698
|
fileName = trim(fileName)
|
|
703
|
-
let homeDir =
|
|
699
|
+
let homeDir = setting.workspaceMap[setting.defaultSpace]
|
|
704
700
|
if (!fileName.startsWith("/")) {
|
|
705
701
|
fileName = setting.initKey + ' ' + fileName.replace(new RegExp(`^${setting.initKey}\\s+`), '')
|
|
706
702
|
if (!/\..+/.test(fileName)) {
|
|
@@ -769,7 +765,7 @@ async function fileJson(key, fn, fmt = true) {
|
|
|
769
765
|
let dataDir = getLibDataDir() + "/data"
|
|
770
766
|
let fileName = trim(key)
|
|
771
767
|
let path = dataDir + "/" + fileName;
|
|
772
|
-
let homeDir =
|
|
768
|
+
let homeDir = setting.workspaceMap[setting.defaultSpace]
|
|
773
769
|
let isInit = fileName.startsWith(setting.initKey);
|
|
774
770
|
if (isInit) {
|
|
775
771
|
path = homeDir + '/' + toJsirFileName(fileName);
|
|
@@ -798,7 +794,7 @@ async function fileJson(key, fn, fmt = true) {
|
|
|
798
794
|
}
|
|
799
795
|
|
|
800
796
|
function setModulePaths(space) {
|
|
801
|
-
let moduleDir =
|
|
797
|
+
let moduleDir = setting.workspaceMap[space] + '/node_modules'
|
|
802
798
|
if (module.paths.indexOf(moduleDir) === -1) {
|
|
803
799
|
module.paths.splice(0, module.paths.length)
|
|
804
800
|
module.paths.push(moduleDir)
|
|
@@ -808,13 +804,13 @@ function setModulePaths(space) {
|
|
|
808
804
|
}
|
|
809
805
|
|
|
810
806
|
function enrichPackages(moduleName, space) {
|
|
811
|
-
if (!
|
|
812
|
-
|
|
807
|
+
if (!setting.packages.hasOwnProperty(moduleName)) {
|
|
808
|
+
setting.packages[moduleName] = space
|
|
813
809
|
}
|
|
814
810
|
}
|
|
815
811
|
|
|
816
812
|
function requireG(moduleName, space){
|
|
817
|
-
space = space ||
|
|
813
|
+
space = space || setting.defaultSpace;
|
|
818
814
|
let moduleDir = setModulePaths(space);
|
|
819
815
|
if (module.paths.indexOf(moduleDir) === -1) {
|
|
820
816
|
module.paths.splice(0, module.paths.length)
|
|
@@ -836,7 +832,7 @@ function requireG(moduleName, space){
|
|
|
836
832
|
}
|
|
837
833
|
|
|
838
834
|
async function importG(moduleName, space) {
|
|
839
|
-
space = space ||
|
|
835
|
+
space = space || setting.defaultSpace;
|
|
840
836
|
let moduleDir = setModulePaths(space);
|
|
841
837
|
try {
|
|
842
838
|
let result = await import(moduleName);
|
|
@@ -1064,7 +1060,7 @@ async function _fileLock(key, fn) {
|
|
|
1064
1060
|
} catch (e) {
|
|
1065
1061
|
return false;
|
|
1066
1062
|
}
|
|
1067
|
-
let fileLockMap =
|
|
1063
|
+
let fileLockMap = setting.fileLock;
|
|
1068
1064
|
fileLockMap[file] = true;
|
|
1069
1065
|
try {
|
|
1070
1066
|
await fn();
|
|
@@ -1116,19 +1112,19 @@ function setTips(key, value, onRm) {
|
|
|
1116
1112
|
if (!vl(key) || key.indexOf(",") !== -1) {
|
|
1117
1113
|
throw "invalid tip key";
|
|
1118
1114
|
}
|
|
1119
|
-
getOr(
|
|
1115
|
+
getOr(setting.tips, key, []).push(value);
|
|
1120
1116
|
if (onRm) {
|
|
1121
1117
|
getOr(_tipsOnRm, key, []).push(onRm)
|
|
1122
1118
|
}
|
|
1123
1119
|
}
|
|
1124
1120
|
|
|
1125
1121
|
function delTips(...keys) {
|
|
1126
|
-
for (let key of Object.keys(
|
|
1122
|
+
for (let key of Object.keys(setting.tips)) {
|
|
1127
1123
|
if (keys.length === 0) {
|
|
1128
|
-
delete
|
|
1124
|
+
delete setting.tips[key]
|
|
1129
1125
|
tipsOnRmCallback(key)
|
|
1130
1126
|
} else if (keys.indexOf(key) !== -1) {
|
|
1131
|
-
delete
|
|
1127
|
+
delete setting.tips[key]
|
|
1132
1128
|
tipsOnRmCallback(key)
|
|
1133
1129
|
}
|
|
1134
1130
|
}
|
|
@@ -1186,7 +1182,7 @@ function fileCleaner(path, maxChars) {
|
|
|
1186
1182
|
`
|
|
1187
1183
|
cleanFiles[path] = Date.now() + (1000 * 60)
|
|
1188
1184
|
let flag = "sys"
|
|
1189
|
-
if (
|
|
1185
|
+
if (!setting.tips.hasOwnProperty(flag)) {
|
|
1190
1186
|
timer(flag, 1000 * 9, () => {
|
|
1191
1187
|
for (let aPath of Object.keys(cleanFiles)) {
|
|
1192
1188
|
if (cleanFiles[aPath] < Date.now()) {
|
|
@@ -1399,14 +1395,17 @@ async function eia(cmd, args = [], shell = false) {
|
|
|
1399
1395
|
`
|
|
1400
1396
|
当前进程不会卡住,输入输出由cmd进程持有
|
|
1401
1397
|
`
|
|
1398
|
+
setting.sigExit = false;
|
|
1402
1399
|
let child = spawn(cmd, args, {stdio:"inherit", shell});
|
|
1403
1400
|
return new Promise((resolve, reject) => {
|
|
1404
1401
|
// 监听子进程的关闭事件
|
|
1405
1402
|
child.on('close', (code) => {
|
|
1403
|
+
setting.sigExit = true;
|
|
1406
1404
|
resolve(code);
|
|
1407
1405
|
});
|
|
1408
1406
|
// 可选:监听子进程的错误事件
|
|
1409
1407
|
child.on('error', (err) => {
|
|
1408
|
+
setting.sigExit = true;
|
|
1410
1409
|
reject(err)
|
|
1411
1410
|
});
|
|
1412
1411
|
})
|