Refactor FS references in the Base Server#32179
Conversation
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
| protected abstract getPagesManifest(): PagesManifest | undefined | ||
| protected abstract getBuildId(): string | ||
| protected abstract generatePublicRoutes(): Route[] | ||
| protected abstract getFilesystemPaths(): Set<string> |
There was a problem hiding this comment.
What do we think about trying to make these async when possible? I know that we can have some of this pre-calculated, but I feel like if it's easy during rewrite, making them async is just more flexible later on
There was a problem hiding this comment.
Yeah I think we can totally do that in an upcoming PR. Would be good to do the same for require too!
| }) | ||
| } | ||
|
|
||
| protected getPagesManifest(): undefined { |
There was a problem hiding this comment.
is getPagesManifest still required to be defined since it derives from the next-server?
same with getMiddlewareManifest
There was a problem hiding this comment.
Yes since I refactored the caller conditions in the base server a bit so they'are always called: https://github.com/vercel/next.js/pull/32179/files?diff=unified&w=0#diff-2b8e3503c1bebf856610a5551d9c5996435b99f45db389d4eeac1b671518875eL306-R310
Goal is to eventually get rid of ad-hoc dev server logic from the base server.
This comment has been minimized.
This comment has been minimized.
Stats from current PRDefault Build (Increase detected
|
| vercel/next.js canary | shuding/next.js shu/9f14 | Change | |
|---|---|---|---|
| buildDuration | 18.1s | 17.9s | -181ms |
| buildDurationCached | 3.3s | 3.3s | -17ms |
| nodeModulesSize | 347 MB | 347 MB |
Page Load Tests Overall increase ✓
| vercel/next.js canary | shuding/next.js shu/9f14 | Change | |
|---|---|---|---|
| / failed reqs | 0 | 0 | ✓ |
| / total time (seconds) | 2.961 | 2.901 | -0.06 |
| / avg req/sec | 844.42 | 861.83 | +17.41 |
| /error-in-render failed reqs | 0 | 0 | ✓ |
| /error-in-render total time (seconds) | 1.358 | 1.364 | |
| /error-in-render avg req/sec | 1840.93 | 1832.46 |
Client Bundles (main, webpack, commons)
| vercel/next.js canary | shuding/next.js shu/9f14 | Change | |
|---|---|---|---|
| 450.HASH.js gzip | 179 B | 179 B | ✓ |
| framework-HASH.js gzip | 42.2 kB | 42.2 kB | ✓ |
| main-HASH.js gzip | 28.4 kB | 28.4 kB | ✓ |
| webpack-HASH.js gzip | 1.45 kB | 1.45 kB | ✓ |
| Overall change | 72.3 kB | 72.3 kB | ✓ |
Legacy Client Bundles (polyfills)
| vercel/next.js canary | shuding/next.js shu/9f14 | Change | |
|---|---|---|---|
| polyfills-HASH.js gzip | 31 kB | 31 kB | ✓ |
| Overall change | 31 kB | 31 kB | ✓ |
Client Pages
| vercel/next.js canary | shuding/next.js shu/9f14 | Change | |
|---|---|---|---|
| _app-HASH.js gzip | 1.37 kB | 1.37 kB | ✓ |
| _error-HASH.js gzip | 194 B | 194 B | ✓ |
| amp-HASH.js gzip | 312 B | 312 B | ✓ |
| css-HASH.js gzip | 326 B | 326 B | ✓ |
| dynamic-HASH.js gzip | 2.38 kB | 2.38 kB | ✓ |
| head-HASH.js gzip | 350 B | 350 B | ✓ |
| hooks-HASH.js gzip | 635 B | 635 B | ✓ |
| image-HASH.js gzip | 4.49 kB | 4.49 kB | ✓ |
| index-HASH.js gzip | 263 B | 263 B | ✓ |
| link-HASH.js gzip | 1.87 kB | 1.87 kB | ✓ |
| routerDirect..HASH.js gzip | 321 B | 321 B | ✓ |
| script-HASH.js gzip | 383 B | 383 B | ✓ |
| withRouter-HASH.js gzip | 318 B | 318 B | ✓ |
| 85e02e95b279..7e3.css gzip | 107 B | 107 B | ✓ |
| Overall change | 13.3 kB | 13.3 kB | ✓ |
Client Build Manifests
| vercel/next.js canary | shuding/next.js shu/9f14 | Change | |
|---|---|---|---|
| _buildManifest.js gzip | 460 B | 460 B | ✓ |
| Overall change | 460 B | 460 B | ✓ |
Rendered Page Sizes
| vercel/next.js canary | shuding/next.js shu/9f14 | Change | |
|---|---|---|---|
| index.html gzip | 531 B | 531 B | ✓ |
| link.html gzip | 544 B | 544 B | ✓ |
| withRouter.html gzip | 526 B | 526 B | ✓ |
| Overall change | 1.6 kB | 1.6 kB | ✓ |
Default Build with SWC
General Overall increase ⚠️
| vercel/next.js canary | shuding/next.js shu/9f14 | Change | |
|---|---|---|---|
| buildDuration | 19.4s | 19.4s | |
| buildDurationCached | 3.3s | 3.3s | -45ms |
| nodeModulesSize | 347 MB | 347 MB |
Page Load Tests Overall increase ✓
| vercel/next.js canary | shuding/next.js shu/9f14 | Change | |
|---|---|---|---|
| / failed reqs | 0 | 0 | ✓ |
| / total time (seconds) | 2.959 | 2.932 | -0.03 |
| / avg req/sec | 844.81 | 852.58 | +7.77 |
| /error-in-render failed reqs | 0 | 0 | ✓ |
| /error-in-render total time (seconds) | 1.336 | 1.341 | 0 |
| /error-in-render avg req/sec | 1870.97 | 1864.08 |
Client Bundles (main, webpack, commons)
| vercel/next.js canary | shuding/next.js shu/9f14 | Change | |
|---|---|---|---|
| 450.HASH.js gzip | 179 B | 179 B | ✓ |
| framework-HASH.js gzip | 42.3 kB | 42.3 kB | ✓ |
| main-HASH.js gzip | 28.6 kB | 28.6 kB | ✓ |
| webpack-HASH.js gzip | 1.44 kB | 1.44 kB | ✓ |
| Overall change | 72.5 kB | 72.5 kB | ✓ |
Legacy Client Bundles (polyfills)
| vercel/next.js canary | shuding/next.js shu/9f14 | Change | |
|---|---|---|---|
| polyfills-HASH.js gzip | 31 kB | 31 kB | ✓ |
| Overall change | 31 kB | 31 kB | ✓ |
Client Pages
| vercel/next.js canary | shuding/next.js shu/9f14 | Change | |
|---|---|---|---|
| _app-HASH.js gzip | 1.35 kB | 1.35 kB | ✓ |
| _error-HASH.js gzip | 180 B | 180 B | ✓ |
| amp-HASH.js gzip | 305 B | 305 B | ✓ |
| css-HASH.js gzip | 321 B | 321 B | ✓ |
| dynamic-HASH.js gzip | 2.37 kB | 2.37 kB | ✓ |
| head-HASH.js gzip | 342 B | 342 B | ✓ |
| hooks-HASH.js gzip | 622 B | 622 B | ✓ |
| image-HASH.js gzip | 4.53 kB | 4.53 kB | ✓ |
| index-HASH.js gzip | 256 B | 256 B | ✓ |
| link-HASH.js gzip | 1.9 kB | 1.9 kB | ✓ |
| routerDirect..HASH.js gzip | 314 B | 314 B | ✓ |
| script-HASH.js gzip | 375 B | 375 B | ✓ |
| withRouter-HASH.js gzip | 309 B | 309 B | ✓ |
| 85e02e95b279..7e3.css gzip | 107 B | 107 B | ✓ |
| Overall change | 13.3 kB | 13.3 kB | ✓ |
Client Build Manifests
| vercel/next.js canary | shuding/next.js shu/9f14 | Change | |
|---|---|---|---|
| _buildManifest.js gzip | 458 B | 458 B | ✓ |
| Overall change | 458 B | 458 B | ✓ |
Rendered Page Sizes
| vercel/next.js canary | shuding/next.js shu/9f14 | Change | |
|---|---|---|---|
| index.html gzip | 530 B | 530 B | ✓ |
| link.html gzip | 545 B | 545 B | ✓ |
| withRouter.html gzip | 526 B | 526 B | ✓ |
| Overall change | 1.6 kB | 1.6 kB | ✓ |
After #32154, we are moving FS related methods out of the base server and into the node server as planned in #31506. This PR removes the direct
fsreferences.Some method names might need to be modified in the future.
Bug
fixes #numbercontributing.mdFeature
fixes #numbercontributing.mdDocumentation / Examples
yarn lint