-
Notifications
You must be signed in to change notification settings - Fork 30.3k
export: Don't add a slash on hash links #9973
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
Conversation
Stats from current PRDefault Server ModeGeneral Overall increase
|
| zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
|---|---|---|---|
| buildDuration | 13.7s | 13.6s | -17ms |
| nodeModulesSize | 48.9 MB | 48.9 MB |
Client Bundles (main, webpack, commons)
| zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
|---|---|---|---|
| main-HASH.js gzip | 5.13 kB | 5.13 kB | ✓ |
| webpack-HASH.js gzip | 746 B | 746 B | ✓ |
| 4952ddcd88e7..54d3.js gzip | 4.68 kB | 4.68 kB | ✓ |
| commons.HASH.js gzip | 4.06 kB | 4.06 kB | ✓ |
| de003c3a9d30..4cf7.js gzip | 13.7 kB | 13.7 kB | ✓ |
| framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
| Overall change | 67.5 kB | 67.5 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
| zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
|---|---|---|---|
| main-HASH.module.js gzip | 4.19 kB | 4.19 kB | ✓ |
| webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
| 4952ddcd88e7..dule.js gzip | 5.56 kB | 5.56 kB | ✓ |
| de003c3a9d30..dule.js gzip | 12.5 kB | 12.5 kB | ✓ |
| framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
| Overall change | 62.1 kB | 62.1 kB | ✓ |
Legacy Client Bundles (polyfills)
| zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
|---|---|---|---|
| polyfills-HASH.js gzip | 4.76 kB | 4.76 kB | ✓ |
| Overall change | 4.76 kB | 4.76 kB | ✓ |
Client Pages
| zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
|---|---|---|---|
| _app.js gzip | 1.33 kB | 1.33 kB | ✓ |
| _error.js gzip | 4.07 kB | 4.07 kB | ✓ |
| hooks.js gzip | 779 B | 779 B | ✓ |
| index.js gzip | 222 B | 222 B | ✓ |
| link.js gzip | 2.9 kB | 2.9 kB | ✓ |
| routerDirect.js gzip | 283 B | 283 B | ✓ |
| withRouter.js gzip | 282 B | 282 B | ✓ |
| Overall change | 9.87 kB | 9.87 kB | ✓ |
Client Pages Modern
| zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
|---|---|---|---|
| _app.module.js gzip | 757 B | 757 B | ✓ |
| _error.module.js gzip | 3.06 kB | 3.06 kB | ✓ |
| hooks.module.js gzip | 371 B | 371 B | ✓ |
| index.module.js gzip | 212 B | 212 B | ✓ |
| link.module.js gzip | 2.47 kB | 2.47 kB | ✓ |
| routerDirect..dule.js gzip | 273 B | 273 B | ✓ |
| withRouter.m..dule.js gzip | 272 B | 272 B | ✓ |
| Overall change | 7.41 kB | 7.41 kB | ✓ |
Client Build Manifests
| zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
|---|---|---|---|
| _buildManifest.js gzip | 61 B | 61 B | ✓ |
| _buildManife..dule.js gzip | 61 B | 61 B | ✓ |
| Overall change | 122 B | 122 B | ✓ |
Rendered Page Sizes
| zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
|---|---|---|---|
| index.html gzip | 1.02 kB | 1.02 kB | ✓ |
| link.html gzip | 1.03 kB | 1.03 kB | ✓ |
| withRouter.html gzip | 1.02 kB | 1.02 kB | ✓ |
| Overall change | 3.07 kB | 3.07 kB | ✓ |
Serverless Mode
General Overall increase ⚠️
| zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
|---|---|---|---|
| buildDuration | 13.8s | 13.9s | |
| nodeModulesSize | 48.9 MB | 48.9 MB |
Client Bundles (main, webpack, commons)
| zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
|---|---|---|---|
| main-HASH.js gzip | 5.13 kB | 5.13 kB | ✓ |
| webpack-HASH.js gzip | 746 B | 746 B | ✓ |
| 4952ddcd88e7..54d3.js gzip | 4.68 kB | 4.68 kB | ✓ |
| commons.HASH.js gzip | 4.06 kB | 4.06 kB | ✓ |
| de003c3a9d30..4cf7.js gzip | 13.7 kB | 13.7 kB | ✓ |
| framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
| Overall change | 67.5 kB | 67.5 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
| zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
|---|---|---|---|
| main-HASH.module.js gzip | 4.19 kB | 4.19 kB | ✓ |
| webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
| 4952ddcd88e7..dule.js gzip | 5.56 kB | 5.56 kB | ✓ |
| de003c3a9d30..dule.js gzip | 12.5 kB | 12.5 kB | ✓ |
| framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
| Overall change | 62.1 kB | 62.1 kB | ✓ |
Legacy Client Bundles (polyfills)
| zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
|---|---|---|---|
| polyfills-HASH.js gzip | 4.76 kB | 4.76 kB | ✓ |
| Overall change | 4.76 kB | 4.76 kB | ✓ |
Client Pages
| zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
|---|---|---|---|
| _app.js gzip | 1.33 kB | 1.33 kB | ✓ |
| _error.js gzip | 4.07 kB | 4.07 kB | ✓ |
| hooks.js gzip | 779 B | 779 B | ✓ |
| index.js gzip | 222 B | 222 B | ✓ |
| link.js gzip | 2.9 kB | 2.9 kB | ✓ |
| routerDirect.js gzip | 283 B | 283 B | ✓ |
| withRouter.js gzip | 282 B | 282 B | ✓ |
| Overall change | 9.87 kB | 9.87 kB | ✓ |
Client Pages Modern
| zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
|---|---|---|---|
| _app.module.js gzip | 757 B | 757 B | ✓ |
| _error.module.js gzip | 3.06 kB | 3.06 kB | ✓ |
| hooks.module.js gzip | 371 B | 371 B | ✓ |
| index.module.js gzip | 212 B | 212 B | ✓ |
| link.module.js gzip | 2.47 kB | 2.47 kB | ✓ |
| routerDirect..dule.js gzip | 273 B | 273 B | ✓ |
| withRouter.m..dule.js gzip | 272 B | 272 B | ✓ |
| Overall change | 7.41 kB | 7.41 kB | ✓ |
Client Build Manifests
| zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
|---|---|---|---|
| _buildManifest.js gzip | 61 B | 61 B | ✓ |
| _buildManife..dule.js gzip | 61 B | 61 B | ✓ |
| Overall change | 122 B | 122 B | ✓ |
Serverless bundles
| zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
|---|---|---|---|
| _error.js gzip | 77.7 kB | 77.7 kB | ✓ |
| hooks.html gzip | 1.05 kB | 1.05 kB | ✓ |
| index.js gzip | 78 kB | 78 kB | ✓ |
| link.js gzip | 80.3 kB | 80.3 kB | ✓ |
| routerDirect.js gzip | 78 kB | 78 kB | ✓ |
| withRouter.js gzip | 78.1 kB | 78.1 kB | ✓ |
| Overall change | 393 kB | 393 kB | ✓ |
Commit: a1dff64
|
Also, if bundle size turns out to be a problem, I think we can probably also replace if (path) {
path = path.replace(/\/$/, '')
// Append a trailing slash if this path does not have an extension
if (!/\.[^/]+\/?$/.test(path)) path += `/`
}with // Append a trailing slash if this path does not have an extension and does not have a trailing slash
if (path && !/(\.[^/]+\/?$|\/$)/.test(path)) path += `/`that should also shave off some of those bytes. |
Timer
left a comment
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 looks fine to me, and should only add 7 bytes pre-gzip. The new code is excluded unless you're using this feature.
|
Thanks! |
Stats from current PRDefault Server ModeGeneral Overall increase
|
| zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
|---|---|---|---|
| buildDuration | 13.9s | 13.9s | -9ms |
| nodeModulesSize | 48.9 MB | 48.9 MB |
Client Bundles (main, webpack, commons)
| zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
|---|---|---|---|
| main-HASH.js gzip | 5.11 kB | 5.11 kB | ✓ |
| webpack-HASH.js gzip | 746 B | 746 B | ✓ |
| 4952ddcd88e7..54d3.js gzip | 4.68 kB | 4.68 kB | ✓ |
| commons.HASH.js gzip | 4.06 kB | 4.06 kB | ✓ |
| de003c3a9d30..9881.js gzip | 13.7 kB | 13.7 kB | ✓ |
| framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
| Overall change | 67.4 kB | 67.4 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
| zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
|---|---|---|---|
| main-HASH.module.js gzip | 4.17 kB | 4.17 kB | ✓ |
| webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
| 4952ddcd88e7..dule.js gzip | 5.56 kB | 5.56 kB | ✓ |
| de003c3a9d30..dule.js gzip | 12.5 kB | 12.5 kB | ✓ |
| framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
| Overall change | 62.1 kB | 62.1 kB | ✓ |
Legacy Client Bundles (polyfills)
| zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
|---|---|---|---|
| polyfills-HASH.js gzip | 4.76 kB | 4.76 kB | ✓ |
| Overall change | 4.76 kB | 4.76 kB | ✓ |
Client Pages
| zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
|---|---|---|---|
| _app.js gzip | 1.33 kB | 1.33 kB | ✓ |
| _error.js gzip | 4.07 kB | 4.07 kB | ✓ |
| hooks.js gzip | 779 B | 779 B | ✓ |
| index.js gzip | 222 B | 222 B | ✓ |
| link.js gzip | 2.9 kB | 2.9 kB | ✓ |
| routerDirect.js gzip | 283 B | 283 B | ✓ |
| withRouter.js gzip | 282 B | 282 B | ✓ |
| Overall change | 9.87 kB | 9.87 kB | ✓ |
Client Pages Modern
| zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
|---|---|---|---|
| _app.module.js gzip | 757 B | 757 B | ✓ |
| _error.module.js gzip | 3.06 kB | 3.06 kB | ✓ |
| hooks.module.js gzip | 371 B | 371 B | ✓ |
| index.module.js gzip | 212 B | 212 B | ✓ |
| link.module.js gzip | 2.47 kB | 2.47 kB | ✓ |
| routerDirect..dule.js gzip | 273 B | 273 B | ✓ |
| withRouter.m..dule.js gzip | 272 B | 272 B | ✓ |
| Overall change | 7.41 kB | 7.41 kB | ✓ |
Client Build Manifests
| zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
|---|---|---|---|
| _buildManifest.js gzip | 61 B | 61 B | ✓ |
| _buildManife..dule.js gzip | 61 B | 61 B | ✓ |
| Overall change | 122 B | 122 B | ✓ |
Rendered Page Sizes
| zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
|---|---|---|---|
| index.html gzip | 1.02 kB | 1.02 kB | ✓ |
| link.html gzip | 1.03 kB | 1.03 kB | ✓ |
| withRouter.html gzip | 1.01 kB | 1.01 kB | ✓ |
| Overall change | 3.06 kB | 3.06 kB | ✓ |
Serverless Mode
General Overall increase ⚠️
| zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
|---|---|---|---|
| buildDuration | 13.8s | 14.2s | |
| nodeModulesSize | 48.9 MB | 48.9 MB |
Client Bundles (main, webpack, commons)
| zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
|---|---|---|---|
| main-HASH.js gzip | 5.11 kB | 5.11 kB | ✓ |
| webpack-HASH.js gzip | 746 B | 746 B | ✓ |
| 4952ddcd88e7..54d3.js gzip | 4.68 kB | 4.68 kB | ✓ |
| commons.HASH.js gzip | 4.06 kB | 4.06 kB | ✓ |
| de003c3a9d30..9881.js gzip | 13.7 kB | 13.7 kB | ✓ |
| framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
| Overall change | 67.4 kB | 67.4 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
| zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
|---|---|---|---|
| main-HASH.module.js gzip | 4.17 kB | 4.17 kB | ✓ |
| webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
| 4952ddcd88e7..dule.js gzip | 5.56 kB | 5.56 kB | ✓ |
| de003c3a9d30..dule.js gzip | 12.5 kB | 12.5 kB | ✓ |
| framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
| Overall change | 62.1 kB | 62.1 kB | ✓ |
Legacy Client Bundles (polyfills)
| zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
|---|---|---|---|
| polyfills-HASH.js gzip | 4.76 kB | 4.76 kB | ✓ |
| Overall change | 4.76 kB | 4.76 kB | ✓ |
Client Pages
| zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
|---|---|---|---|
| _app.js gzip | 1.33 kB | 1.33 kB | ✓ |
| _error.js gzip | 4.07 kB | 4.07 kB | ✓ |
| hooks.js gzip | 779 B | 779 B | ✓ |
| index.js gzip | 222 B | 222 B | ✓ |
| link.js gzip | 2.9 kB | 2.9 kB | ✓ |
| routerDirect.js gzip | 283 B | 283 B | ✓ |
| withRouter.js gzip | 282 B | 282 B | ✓ |
| Overall change | 9.87 kB | 9.87 kB | ✓ |
Client Pages Modern
| zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
|---|---|---|---|
| _app.module.js gzip | 757 B | 757 B | ✓ |
| _error.module.js gzip | 3.06 kB | 3.06 kB | ✓ |
| hooks.module.js gzip | 371 B | 371 B | ✓ |
| index.module.js gzip | 212 B | 212 B | ✓ |
| link.module.js gzip | 2.47 kB | 2.47 kB | ✓ |
| routerDirect..dule.js gzip | 273 B | 273 B | ✓ |
| withRouter.m..dule.js gzip | 272 B | 272 B | ✓ |
| Overall change | 7.41 kB | 7.41 kB | ✓ |
Client Build Manifests
| zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
|---|---|---|---|
| _buildManifest.js gzip | 61 B | 61 B | ✓ |
| _buildManife..dule.js gzip | 61 B | 61 B | ✓ |
| Overall change | 122 B | 122 B | ✓ |
Serverless bundles
| zeit/next.js canary | Janpot/next.js fix-hash-trailing-slash | Change | |
|---|---|---|---|
| _error.js gzip | 77.7 kB | 77.7 kB | ✓ |
| hooks.html gzip | 1.05 kB | 1.05 kB | ✓ |
| index.js gzip | 78 kB | 78 kB | ✓ |
| link.js gzip | 80.4 kB | 80.4 kB | ✓ |
| routerDirect.js gzip | 78 kB | 78 kB | ✓ |
| withRouter.js gzip | 78.1 kB | 78.1 kB | ✓ |
| Overall change | 393 kB | 393 kB | ✓ |
Commit: 55f070b
|
@Janpot Thanks |
|
Published as |
Fixes #9678
If I'm not mistaken this code is only included during export with trailing slash. So the impact on the bundle size should be acceptable.