-
Notifications
You must be signed in to change notification settings - Fork 170
Description
Version
Reproduction link
https://github.com/jhnns/nuxt-pwa-build-perf-demo
Steps to reproduce
- Create an initial nuxt project with
create-nuxt-appand select the PWA module - Run
node --inspect-brk ./node_modules/.bin/nuxt - Open Chrome and go to chrome://inspect/#devices
- Select Node process and create a profile
What is expected ?
The icon resize task should start as soon as possible in a different process/thread to speed up the build.
What is actually happening?
Here is a flamegraph that demonstrates that the icon resize task takes up more than half of the build time. But the bigger problem is that the task blocks the main thread which means that webpack can't start to do its work in the mean time. Here I've marked the resize task with red:
You can see that webpack starts its work only after around 16s.
Additional comments?
Spinning up a separate process doesn't come for free. Usually it's better to have a separate thread for this kind of task. We could do this with Node.js worker threads (https://nodejs.org/api/worker_threads.html) which are only available for Node >10.
