diff --git a/bin/improved-yarn-audit b/bin/improved-yarn-audit index 9028aff..ab66c5f 100755 --- a/bin/improved-yarn-audit +++ b/bin/improved-yarn-audit @@ -274,22 +274,31 @@ async function invokeYarnAudit() { cleanupAuditResultsFile() const auditResultsFileStream = getAuditResultsFileStream("w") - const yarnBinaryPostFix = isWindows ? ".cmd" : "" - const yarnProcess = spawn(`yarn${yarnBinaryPostFix}`, auditParams, { env: env }) - yarnProcess.stdout.pipe(auditResultsFileStream) - yarnProcess.stderr.pipe(auditResultsFileStream) - - let exitCode = await new Promise((resolve, reject) => - yarnProcess.on("exit", resolve) - .on("error", reject) - ) - - auditResultsFileStream.close() - - logDebug(() => `Yarn audit output size: ${statSync(auditResultsFilePath).size} bytes`) - - return exitCode + return new Promise(resolve => { + auditResultsFileStream.on("open", async () => { + const yarnBinaryPostFix = isWindows ? ".cmd" : "" + const yarnProcess = spawn(`yarn${yarnBinaryPostFix}`, auditParams, { + env: env, + stdio: [ + 'pipe', + auditResultsFileStream, + auditResultsFileStream, + ] + }) + + let exitCode = await new Promise((resolve, reject) => + yarnProcess.on("exit", resolve) + .on("error", reject) + ) + + auditResultsFileStream.close() + + logDebug(() => `Yarn audit output size: ${statSync(auditResultsFilePath).size} bytes`) + + resolve(exitCode); + }); + }) } async function runYarnAudit() {