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
Fix symlink and copy logic to standalone
directory when using outputStandalone
#35535
Fix symlink and copy logic to standalone
directory when using outputStandalone
#35535
Conversation
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Failing test suitesCommit: 7acfea0
Expand output● next/jest › should work
● Test suite failed to run
● Test suite failed to run
Read more about building and testing Next.js in contributing.md. |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
outputStandalone
standalone
directory when using outputStandalone
This comment has been minimized.
This comment has been minimized.
@ijjk can you review? I noticed you made the original pr for this feature |
Stats from current PRDefault Build (Decrease detected ✓)General Overall decrease ✓
Page Load Tests Overall decrease
|
vercel/next.js canary | remorses/next.js fix-symlinks-with-standalone | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 4.322 | 4.362 | |
/ avg req/sec | 578.44 | 573.17 | |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 2.108 | 2.154 | |
/error-in-render avg req/sec | 1185.68 | 1160.62 |
Client Bundles (main, webpack)
vercel/next.js canary | remorses/next.js fix-symlinks-with-standalone | Change | |
---|---|---|---|
925.HASH.js gzip | 179 B | 179 B | ✓ |
framework-HASH.js gzip | 42 kB | 42 kB | ✓ |
main-HASH.js gzip | 28.3 kB | 28.3 kB | ✓ |
webpack-HASH.js gzip | 1.44 kB | 1.44 kB | ✓ |
Overall change | 72 kB | 72 kB | ✓ |
Legacy Client Bundles (polyfills)
vercel/next.js canary | remorses/next.js fix-symlinks-with-standalone | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 31 kB | 31 kB | ✓ |
Overall change | 31 kB | 31 kB | ✓ |
Client Pages
vercel/next.js canary | remorses/next.js fix-symlinks-with-standalone | Change | |
---|---|---|---|
_app-HASH.js gzip | 1.36 kB | 1.36 kB | ✓ |
_error-HASH.js gzip | 192 B | 192 B | ✓ |
amp-HASH.js gzip | 309 B | 309 B | ✓ |
css-HASH.js gzip | 327 B | 327 B | ✓ |
dynamic-HASH.js gzip | 3.04 kB | 3.04 kB | ✓ |
head-HASH.js gzip | 351 B | 351 B | ✓ |
hooks-HASH.js gzip | 920 B | 920 B | ✓ |
image-HASH.js gzip | 5.73 kB | 5.73 kB | ✓ |
index-HASH.js gzip | 263 B | 263 B | ✓ |
link-HASH.js gzip | 2.36 kB | 2.36 kB | ✓ |
routerDirect..HASH.js gzip | 320 B | 320 B | ✓ |
script-HASH.js gzip | 392 B | 392 B | ✓ |
withRouter-HASH.js gzip | 319 B | 319 B | ✓ |
85e02e95b279..7e3.css gzip | 107 B | 107 B | ✓ |
Overall change | 16 kB | 16 kB | ✓ |
Client Build Manifests
vercel/next.js canary | remorses/next.js fix-symlinks-with-standalone | Change | |
---|---|---|---|
_buildManifest.js gzip | 461 B | 461 B | ✓ |
Overall change | 461 B | 461 B | ✓ |
Rendered Page Sizes
vercel/next.js canary | remorses/next.js fix-symlinks-with-standalone | Change | |
---|---|---|---|
index.html gzip | 531 B | 531 B | ✓ |
link.html gzip | 543 B | 543 B | ✓ |
withRouter.html gzip | 524 B | 524 B | ✓ |
Overall change | 1.6 kB | 1.6 kB | ✓ |
Default Build with SWC (Decrease detected ✓)
General Overall decrease ✓
vercel/next.js canary | remorses/next.js fix-symlinks-with-standalone | Change | |
---|---|---|---|
buildDuration | 24s | 23.7s | -285ms |
buildDurationCached | 7.7s | 7.8s | |
nodeModulesSize | 484 MB | 484 MB | -75 B |
Page Load Tests Overall decrease ⚠️
vercel/next.js canary | remorses/next.js fix-symlinks-with-standalone | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 4.417 | 4.402 | -0.01 |
/ avg req/sec | 565.96 | 567.95 | +1.99 |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 2.086 | 2.141 | |
/error-in-render avg req/sec | 1198.5 | 1167.65 |
Client Bundles (main, webpack)
vercel/next.js canary | remorses/next.js fix-symlinks-with-standalone | Change | |
---|---|---|---|
925.HASH.js gzip | 178 B | 178 B | ✓ |
framework-HASH.js gzip | 42.3 kB | 42.3 kB | ✓ |
main-HASH.js gzip | 28.7 kB | 28.7 kB | ✓ |
webpack-HASH.js gzip | 1.45 kB | 1.45 kB | ✓ |
Overall change | 72.6 kB | 72.6 kB | ✓ |
Legacy Client Bundles (polyfills)
vercel/next.js canary | remorses/next.js fix-symlinks-with-standalone | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 31 kB | 31 kB | ✓ |
Overall change | 31 kB | 31 kB | ✓ |
Client Pages
vercel/next.js canary | remorses/next.js fix-symlinks-with-standalone | Change | |
---|---|---|---|
_app-HASH.js gzip | 1.35 kB | 1.35 kB | ✓ |
_error-HASH.js gzip | 179 B | 179 B | ✓ |
amp-HASH.js gzip | 313 B | 313 B | ✓ |
css-HASH.js gzip | 325 B | 325 B | ✓ |
dynamic-HASH.js gzip | 3.02 kB | 3.02 kB | ✓ |
head-HASH.js gzip | 351 B | 351 B | ✓ |
hooks-HASH.js gzip | 921 B | 921 B | ✓ |
image-HASH.js gzip | 5.77 kB | 5.77 kB | ✓ |
index-HASH.js gzip | 261 B | 261 B | ✓ |
link-HASH.js gzip | 2.44 kB | 2.44 kB | ✓ |
routerDirect..HASH.js gzip | 322 B | 322 B | ✓ |
script-HASH.js gzip | 393 B | 393 B | ✓ |
withRouter-HASH.js gzip | 317 B | 317 B | ✓ |
85e02e95b279..7e3.css gzip | 107 B | 107 B | ✓ |
Overall change | 16.1 kB | 16.1 kB | ✓ |
Client Build Manifests
vercel/next.js canary | remorses/next.js fix-symlinks-with-standalone | Change | |
---|---|---|---|
_buildManifest.js gzip | 458 B | 458 B | ✓ |
Overall change | 458 B | 458 B | ✓ |
Rendered Page Sizes
vercel/next.js canary | remorses/next.js fix-symlinks-with-standalone | Change | |
---|---|---|---|
index.html gzip | 531 B | 531 B | ✓ |
link.html gzip | 546 B | 546 B | ✓ |
withRouter.html gzip | 526 B | 526 B | ✓ |
Overall change | 1.6 kB | 1.6 kB | ✓ |
Great stuff, hopefully @ijjk can review 🙏 |
I added a test for |
path.relative(tracingRoot, symlink), | ||
fileOutputPath | ||
) | ||
await fs.symlink(symlink, fileOutputPath) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
symlink
is already a relative path, no need to use path.relative
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This change looks fine, tests are passing 👍 Thanks!
Bug
Fixes #35235
Fixes #32987
Added a copy function that correctly handles symlinks
Added integration test for the pnpm app that makes heavy use of symlinks