Ugly workaround for this imperfect world where we don't have threads in Node.
Run CPU-consuming Gulp tasks in the separate processes to achieve faster builds.
Install
npm install --save-dev gulp-ll
Usage
Declare which tasks should be run in parallel before any task declaration:
var gulp = ;var ll = ; ll; gulp; gulp; gulp;
And we're set 🎉
So, now my builds will run faster, right?
It depends. Node processes are quite slow to spawn. So, running tasks in the separate processes could be
slower than executing them sequentially in the single process. You need to play a little bit with the
configuration (using time gulp your-task
) to figure out the optimal one. E.g. I was able to reach maximum
performance (~30% faster) by using gulp-ll only for the the heaviest CPU-consuming task out of 3 in my project.
Performance gain also depends on the codebase size: obviously, it will give better results in the big projects.
Faster debugging sessions
Node process may become painfully slow in the debugging mode. Sometimes, when you trying to debug your tests by
running test
task that depends on scripts compilation, linting, etc. it may take ages to reach the desired breakpoint.
This is there gulp-ll come in handy - it will run heavy gulp tasks in the separate processes with the regular speed.
Taking in consideration what was told in the previous paragraph, more likely you will not want to run all your heavy
tasks in the separate processes. But, you can force them to to do so only in the debug:
ll // Always run in separate process // Run in separate process only in debug ;
How I can debug task if it's in separate process?
You can just disable gulp-ll by running Gulp with --no-ll
parameter:
gulp my-task --no-ll
Caveats
More likely gulp-ll will not work for you if you have global variables set by one task and used by another. Apart from the topic, I suggest you to never do so.