diff --git a/packages/core/core/src/PackagerRunner.js b/packages/core/core/src/PackagerRunner.js index 718434d6af6..f74e97df57d 100644 --- a/packages/core/core/src/PackagerRunner.js +++ b/packages/core/core/src/PackagerRunner.js @@ -526,10 +526,15 @@ function writeFileStream( ? stream.pipe(replaceStream(hashRefToNameHash)) : stream; let fsStream = fs.createWriteStream(filePath, options); + let fsStreamClosed = new Promise(resolve => { + fsStream.on('close', () => resolve()); + }); initialStream .pipe(fsStream) - // $FlowFixMe - .on('finish', () => resolve(fsStream.bytesWritten)) + .on('finish', () => + // $FlowFixMe + resolve(fsStreamClosed.then(() => fsStream.bytesWritten)), + ) .on('error', reject); }); } diff --git a/packages/core/fs/src/MemoryFS.js b/packages/core/fs/src/MemoryFS.js index dea0ffce822..8a24c0ab732 100644 --- a/packages/core/fs/src/MemoryFS.js +++ b/packages/core/fs/src/MemoryFS.js @@ -642,8 +642,9 @@ class WriteStream extends Writable { filePath: FilePath; options: ?FileOptions; buffer: Buffer; + constructor(fs: FileSystem, filePath: FilePath, options: ?FileOptions) { - super(); + super({emitClose: true, autoDestroy: true}); this.fs = fs; this.filePath = filePath; this.options = options; @@ -661,10 +662,10 @@ class WriteStream extends Writable { } _final(callback: (error?: Error) => void) { - this.fs.writeFile(this.filePath, this.buffer, this.options).then( - () => callback(), - err => callback(err), - ); + this.fs + .writeFile(this.filePath, this.buffer, this.options) + .then(callback) + .catch(callback); } get bytesWritten() { diff --git a/packages/core/fs/src/NodeFS.js b/packages/core/fs/src/NodeFS.js index b52eb3274bc..9524b865e25 100644 --- a/packages/core/fs/src/NodeFS.js +++ b/packages/core/fs/src/NodeFS.js @@ -43,7 +43,10 @@ export class NodeFS implements FileSystem { createWriteStream(filePath: string, options: any): WriteStream { let tmpFilePath = getTempFilePath(filePath); - let stream = fs.createWriteStream(tmpFilePath, options); + let stream = fs.createWriteStream(tmpFilePath, { + ...options, + emitClose: true, + }); stream.on('close', () => fs.renameSync(tmpFilePath, filePath)); return stream; } diff --git a/packages/reporters/bundle-analyzer/src/BundleAnalyzerReporter.js b/packages/reporters/bundle-analyzer/src/BundleAnalyzerReporter.js index f520343ab0d..7ba8c310374 100644 --- a/packages/reporters/bundle-analyzer/src/BundleAnalyzerReporter.js +++ b/packages/reporters/bundle-analyzer/src/BundleAnalyzerReporter.js @@ -22,7 +22,9 @@ export default new Reporter({ Array, > = new DefaultMap(() => []); for (let bundle of event.bundleGraph.getBundles()) { - bundlesByTarget.get(bundle.target.name).push(bundle); + if (!bundle.isInline) { + bundlesByTarget.get(bundle.target.name).push(bundle); + } } let reportsDir = path.join(options.projectRoot, 'parcel-bundle-reports');