-
Notifications
You must be signed in to change notification settings - Fork 26.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(next): trace build dependencies for turborepo #59553
feat(next): trace build dependencies for turborepo #59553
Conversation
Tests Passed |
Stats from current PRDefault BuildGeneral Overall increase
|
vercel/next.js canary | tknickman/next.js tomknickman/turbo-1904-support-build-access-tracing-in-nextjs | Change | |
---|---|---|---|
buildDuration | 11.6s | 11.7s | N/A |
buildDurationCached | 6.3s | 5.3s | N/A |
nodeModulesSize | 200 MB | 200 MB | |
nextStartRea..uration (ms) | 425ms | 423ms | N/A |
Client Bundles (main, webpack)
vercel/next.js canary | tknickman/next.js tomknickman/turbo-1904-support-build-access-tracing-in-nextjs | Change | |
---|---|---|---|
3f784ff6-HASH.js gzip | 53.4 kB | 53.4 kB | ✓ |
423.HASH.js gzip | 185 B | 181 B | N/A |
68-HASH.js gzip | 29.9 kB | 29.9 kB | N/A |
framework-HASH.js gzip | 45.2 kB | 45.2 kB | ✓ |
main-app-HASH.js gzip | 238 B | 239 B | N/A |
main-HASH.js gzip | 31.8 kB | 31.8 kB | N/A |
webpack-HASH.js gzip | 1.7 kB | 1.7 kB | ✓ |
Overall change | 100 kB | 100 kB | ✓ |
Legacy Client Bundles (polyfills)
vercel/next.js canary | tknickman/next.js tomknickman/turbo-1904-support-build-access-tracing-in-nextjs | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 31 kB | 31 kB | ✓ |
Overall change | 31 kB | 31 kB | ✓ |
Client Pages
vercel/next.js canary | tknickman/next.js tomknickman/turbo-1904-support-build-access-tracing-in-nextjs | Change | |
---|---|---|---|
_app-HASH.js gzip | 194 B | 195 B | N/A |
_error-HASH.js gzip | 182 B | 181 B | N/A |
amp-HASH.js gzip | 502 B | 502 B | ✓ |
css-HASH.js gzip | 320 B | 322 B | N/A |
dynamic-HASH.js gzip | 2.5 kB | 2.5 kB | N/A |
edge-ssr-HASH.js gzip | 255 B | 256 B | N/A |
head-HASH.js gzip | 350 B | 349 B | N/A |
hooks-HASH.js gzip | 368 B | 369 B | N/A |
image-HASH.js gzip | 4.18 kB | 4.18 kB | N/A |
index-HASH.js gzip | 257 B | 256 B | N/A |
link-HASH.js gzip | 2.61 kB | 2.61 kB | N/A |
routerDirect..HASH.js gzip | 310 B | 311 B | N/A |
script-HASH.js gzip | 384 B | 383 B | N/A |
withRouter-HASH.js gzip | 306 B | 308 B | N/A |
1afbb74e6ecf..834.css gzip | 106 B | 106 B | ✓ |
Overall change | 608 B | 608 B | ✓ |
Client Build Manifests
vercel/next.js canary | tknickman/next.js tomknickman/turbo-1904-support-build-access-tracing-in-nextjs | Change | |
---|---|---|---|
_buildManifest.js gzip | 484 B | 484 B | ✓ |
Overall change | 484 B | 484 B | ✓ |
Rendered Page Sizes
vercel/next.js canary | tknickman/next.js tomknickman/turbo-1904-support-build-access-tracing-in-nextjs | Change | |
---|---|---|---|
index.html gzip | 528 B | 527 B | N/A |
link.html gzip | 541 B | 540 B | N/A |
withRouter.html gzip | 523 B | 522 B | N/A |
Overall change | 0 B | 0 B | ✓ |
Edge SSR bundle Size
vercel/next.js canary | tknickman/next.js tomknickman/turbo-1904-support-build-access-tracing-in-nextjs | Change | |
---|---|---|---|
edge-ssr.js gzip | 94 kB | 94 kB | N/A |
page.js gzip | 150 kB | 150 kB | N/A |
Overall change | 0 B | 0 B | ✓ |
Middleware size
vercel/next.js canary | tknickman/next.js tomknickman/turbo-1904-support-build-access-tracing-in-nextjs | Change | |
---|---|---|---|
middleware-b..fest.js gzip | 623 B | 623 B | ✓ |
middleware-r..fest.js gzip | 151 B | 149 B | N/A |
middleware.js gzip | 37.6 kB | 37.6 kB | N/A |
edge-runtime..pack.js gzip | 1.92 kB | 1.92 kB | ✓ |
Overall change | 2.55 kB | 2.55 kB | ✓ |
Next Runtimes
vercel/next.js canary | tknickman/next.js tomknickman/turbo-1904-support-build-access-tracing-in-nextjs | Change | |
---|---|---|---|
app-page-exp...dev.js gzip | 170 kB | 170 kB | ✓ |
app-page-exp..prod.js gzip | 95.8 kB | 95.8 kB | ✓ |
app-page-tur..prod.js gzip | 96.4 kB | 96.4 kB | ✓ |
app-page-tur..prod.js gzip | 91 kB | 91 kB | ✓ |
app-page.run...dev.js gzip | 142 kB | 142 kB | ✓ |
app-page.run..prod.js gzip | 90.3 kB | 90.3 kB | ✓ |
app-route-ex...dev.js gzip | 22.2 kB | 22.2 kB | ✓ |
app-route-ex..prod.js gzip | 14.9 kB | 14.9 kB | ✓ |
app-route-tu..prod.js gzip | 14.9 kB | 14.9 kB | ✓ |
app-route-tu..prod.js gzip | 14.5 kB | 14.5 kB | ✓ |
app-route.ru...dev.js gzip | 21.7 kB | 21.7 kB | ✓ |
app-route.ru..prod.js gzip | 14.5 kB | 14.5 kB | ✓ |
pages-api-tu..prod.js gzip | 9.43 kB | 9.43 kB | ✓ |
pages-api.ru...dev.js gzip | 9.7 kB | 9.7 kB | ✓ |
pages-api.ru..prod.js gzip | 9.43 kB | 9.43 kB | ✓ |
pages-turbo...prod.js gzip | 22 kB | 22 kB | ✓ |
pages.runtim...dev.js gzip | 22.7 kB | 22.7 kB | ✓ |
pages.runtim..prod.js gzip | 22 kB | 22 kB | ✓ |
server.runti..prod.js gzip | 49.7 kB | 49.7 kB | ✓ |
Overall change | 933 kB | 933 kB | ✓ |
930933a
to
1181aaa
Compare
c0b2335
to
07e0dc8
Compare
6cbe74a
to
29d6878
Compare
58aadf9
to
c167cda
Compare
@wyattjoh all your comments should be addressed. I also wanted to get rid of the The alternative to that FS proxy method is throwing it out and just not trying to catch Fs access outside the repo. This should be ok, as access outside of the repo isn't going to be portable anyway and would cause issues when moving the repo between machines. So let me know what you think about that Fs proxy setup. |
d5cfb29
to
948b2a8
Compare
d8418cd
to
daf68cf
Compare
e8086f2
to
2cc8887
Compare
2cc8887
to
de9e4a3
Compare
### Description v0 of work required for zero config (experimental): 1. Support config caching 2. Support task tracing Requires: vercel/next.js#59553 #### TODO - [ ] Testing - [ ] Support caching outputs on first run instead of second (turbo.json uncoupling)
What?
This adds a method to optionally detect disk, network, and env access access during a build and write this to a file.
Why?
This will be consumed by Turborepo to determine if a build can be cached, and if so, how it should be cached.
How?
This implements a proxy that can be selectively applied to functions to watch their access to disk, network, and env. For Turborepo, we only care about what can alter the build output, to achieve this, we trace the config load, and the static page generation.
Closes https://linear.app/vercel/issue/TURBO-1904/support-build-access-tracing-in-nextjs
Performance Testing:
Repo - https://github.com/tknickman/nextjs-turborepo-build-trace-performance-testing
Test case keys
local-xlarge-pages-single-app-without-trace
: this branch, built and linked to a local project with 5000 SSG pages and trace disabledlocal-xlarge-pages-single-app-with-trace
: this branch, built and linked to a local project with 5000 SSG pages and trace enabledlocal-large-pages-single-app-with-trace
: this branch, built and linked to a local project with 100 SSG pages and trace enabledlocal-large-pages-single-app-without-trace
: this branch, built and linked to a local project with 100 SSG pages and trace disabledlocal-approuter-single-app-without-trace
: this branch, built and linked to a local default approuter starter and trace disabledlocal-approuter-single-app-with-trace
: this branch, built and linked to a local default approuter starter and trace enabledlocal-pages-single-app-with-trace
: this branch, built and linked to a local default pages starter and trace enabledlocal-pages-single-app-without-trace
: this branch, built and linked to a local default pages starter and trace disabledapprouter-single-app
: next@latest running on the default approuter starterpages-single-app
: next@latest running on the default pages starterTODO: