Better proc management.
This commit is contained in:
@@ -32,8 +32,8 @@ const webpack = require("webpack"),
|
|||||||
let appSpawnProc = null,
|
let appSpawnProc = null,
|
||||||
appBuildProc = null;
|
appBuildProc = null;
|
||||||
|
|
||||||
const killAppSpawnProc = then => {
|
const killSpawnProc = (proc, then) => {
|
||||||
if (appSpawnProc === null) {
|
if (proc === null) {
|
||||||
then();
|
then();
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@@ -41,23 +41,21 @@ const killAppSpawnProc = then => {
|
|||||||
|
|
||||||
process.stdout.write("Shutdown application ...\n");
|
process.stdout.write("Shutdown application ...\n");
|
||||||
|
|
||||||
process.kill(-appSpawnProc.proc.pid, "SIGINT");
|
process.kill(-proc.proc.pid, "SIGINT");
|
||||||
|
|
||||||
let forceKill = setTimeout(() => {
|
let forceKill = setTimeout(() => {
|
||||||
process.kill(-appSpawnProc.proc.pid);
|
process.kill(-proc.proc.pid);
|
||||||
}, 3000);
|
}, 3000);
|
||||||
|
|
||||||
appSpawnProc.waiter.then(() => {
|
proc.waiter.then(() => {
|
||||||
clearTimeout(forceKill);
|
clearTimeout(forceKill);
|
||||||
|
|
||||||
appSpawnProc = null;
|
|
||||||
|
|
||||||
then();
|
then();
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const startAppSpawnProc = onExit => {
|
const startAppSpawnProc = onExit => {
|
||||||
killAppSpawnProc(() => {
|
killSpawnProc(appSpawnProc, () => {
|
||||||
let mEnv = {};
|
let mEnv = {};
|
||||||
|
|
||||||
for (let i in process.env) {
|
for (let i in process.env) {
|
||||||
@@ -97,6 +95,7 @@ const startAppSpawnProc = onExit => {
|
|||||||
|
|
||||||
onExit();
|
onExit();
|
||||||
resolve(n);
|
resolve(n);
|
||||||
|
appSpawnProc = null;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -117,7 +116,7 @@ const killAllProc = () => {
|
|||||||
appBuildProc = null;
|
appBuildProc = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
killAppSpawnProc(() => {
|
killSpawnProc(appSpawnProc, () => {
|
||||||
process.exit(0);
|
process.exit(0);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@@ -239,19 +238,20 @@ module.exports = {
|
|||||||
apply: compiler => {
|
apply: compiler => {
|
||||||
compiler.hooks.afterEmit.tap("AfterEmitPlugin", () => {
|
compiler.hooks.afterEmit.tap("AfterEmitPlugin", () => {
|
||||||
if (appBuildProc !== null) {
|
if (appBuildProc !== null) {
|
||||||
|
let aBuildProc = appBuildProc;
|
||||||
|
appBuildProc = null;
|
||||||
|
|
||||||
process.stdout.write(
|
process.stdout.write(
|
||||||
"Killing the previous source code generater ...\n"
|
"Killing the previous source code generater ...\n"
|
||||||
);
|
);
|
||||||
|
|
||||||
appBuildProc.stdin.end();
|
aBuildProc.stdin.end();
|
||||||
appBuildProc.stdout.destroy();
|
aBuildProc.stdout.destroy();
|
||||||
appBuildProc.stderr.destroy();
|
aBuildProc.stderr.destroy();
|
||||||
appBuildProc.kill();
|
aBuildProc.kill();
|
||||||
|
|
||||||
appBuildProc = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
killAppSpawnProc(() => {
|
killSpawnProc(appSpawnProc, () => {
|
||||||
process.stdout.write("Generating source code ...\n");
|
process.stdout.write("Generating source code ...\n");
|
||||||
|
|
||||||
appBuildProc = exec(
|
appBuildProc = exec(
|
||||||
|
|||||||
Reference in New Issue
Block a user