diff --git a/packages/core/parcel/src/utils/cpuCount.js b/packages/core/parcel/src/utils/cpuCount.js new file mode 100644 index 00000000000..d0d5613075a --- /dev/null +++ b/packages/core/parcel/src/utils/cpuCount.js @@ -0,0 +1,11 @@ +const os = require('os'); + +module.exports = function() { + let cores; + try { + cores = require('physical-cpu-count'); + } catch (err) { + cores = os.cpus().length; + } + return cores || 1; +}; diff --git a/packages/core/parcel/src/workerfarm/Worker.js b/packages/core/parcel/src/workerfarm/Worker.js index 8c9524984ae..e51cffc1460 100644 --- a/packages/core/parcel/src/workerfarm/Worker.js +++ b/packages/core/parcel/src/workerfarm/Worker.js @@ -41,7 +41,7 @@ class Worker extends EventEmitter { this.child = childProcess.fork(childModule, process.argv, options); - this.child.on('message', this.receive.bind(this)); + this.child.on('message', data => this.receive(data)); this.child.once('exit', code => { this.exitCode = code; diff --git a/packages/core/parcel/src/workerfarm/WorkerFarm.js b/packages/core/parcel/src/workerfarm/WorkerFarm.js index 316c9942450..f9e82e20b4d 100644 --- a/packages/core/parcel/src/workerfarm/WorkerFarm.js +++ b/packages/core/parcel/src/workerfarm/WorkerFarm.js @@ -1,7 +1,7 @@ const {EventEmitter} = require('events'); -const os = require('os'); const errorUtils = require('./errorUtils'); const Worker = require('./Worker'); +const cpuCount = require('../utils/cpuCount'); let shared = null; class WorkerFarm extends EventEmitter { @@ -60,7 +60,7 @@ class WorkerFarm extends EventEmitter { } mkhandle(method) { - return function(...args) { + return (...args) => { // Child process workers are slow to start (~600ms). // While we're waiting, just run on the main thread. // This significantly speeds up startup time. @@ -73,7 +73,7 @@ class WorkerFarm extends EventEmitter { return this.localWorker[method](...args, false); } - }.bind(this); + }; } onError(error, worker) { @@ -258,17 +258,9 @@ class WorkerFarm extends EventEmitter { } static getNumWorkers() { - if (process.env.PARCEL_WORKERS) { - return parseInt(process.env.PARCEL_WORKERS, 10); - } - - let cores; - try { - cores = require('physical-cpu-count'); - } catch (err) { - cores = os.cpus().length; - } - return cores || 1; + return process.env.PARCEL_WORKERS + ? parseInt(process.env.PARCEL_WORKERS, 10) + : cpuCount(); } static callMaster(request, awaitResponse = true) { @@ -285,7 +277,7 @@ class WorkerFarm extends EventEmitter { } static getConcurrentCallsPerWorker() { - return parseInt(process.env.PARCEL_MAX_CONCURRENT_CALLS) || 5; + return parseInt(process.env.PARCEL_MAX_CONCURRENT_CALLS, 10) || 5; } }