-
Notifications
You must be signed in to change notification settings - Fork 27.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(eslint-plugin): add minimal built-in flat presets #73873
base: canary
Are you sure you want to change the base?
Conversation
Failing test suitesCommit: 8a7d85c
Expand output● socket-io › should support socket.io without falling back to polling
Read more about building and testing Next.js in contributing.md. |
Stats from current PRDefault Build (Increase detected
|
vercel/next.js canary | SukkaW/next.js eslint-plugin-presets | Change | |
---|---|---|---|
buildDuration | 19s | 18.9s | N/A |
buildDurationCached | 14.7s | 12.4s | N/A |
nodeModulesSize | 410 MB | 410 MB | N/A |
nextStartRea..uration (ms) | 473ms | 480ms | N/A |
Client Bundles (main, webpack)
vercel/next.js canary | SukkaW/next.js eslint-plugin-presets | Change | |
---|---|---|---|
1187-HASH.js gzip | 50.9 kB | 50.8 kB | N/A |
8276.HASH.js gzip | 169 B | 168 B | N/A |
8377-HASH.js gzip | 5.36 kB | 5.36 kB | N/A |
bccd1874-HASH.js gzip | 53 kB | 53 kB | N/A |
framework-HASH.js gzip | 57.5 kB | 57.5 kB | N/A |
main-app-HASH.js gzip | 233 B | 235 B | N/A |
main-HASH.js gzip | 34.1 kB | 34 kB | N/A |
webpack-HASH.js gzip | 1.71 kB | 1.71 kB | N/A |
Overall change | 0 B | 0 B | ✓ |
Legacy Client Bundles (polyfills)
vercel/next.js canary | SukkaW/next.js eslint-plugin-presets | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 39.4 kB | 39.4 kB | ✓ |
Overall change | 39.4 kB | 39.4 kB | ✓ |
Client Pages
vercel/next.js canary | SukkaW/next.js eslint-plugin-presets | Change | |
---|---|---|---|
_app-HASH.js gzip | 193 B | 193 B | ✓ |
_error-HASH.js gzip | 193 B | 193 B | ✓ |
amp-HASH.js gzip | 512 B | 510 B | N/A |
css-HASH.js gzip | 343 B | 342 B | N/A |
dynamic-HASH.js gzip | 1.84 kB | 1.84 kB | ✓ |
edge-ssr-HASH.js gzip | 265 B | 265 B | ✓ |
head-HASH.js gzip | 363 B | 362 B | N/A |
hooks-HASH.js gzip | 393 B | 392 B | N/A |
image-HASH.js gzip | 4.49 kB | 4.49 kB | N/A |
index-HASH.js gzip | 268 B | 268 B | ✓ |
link-HASH.js gzip | 2.35 kB | 2.34 kB | N/A |
routerDirect..HASH.js gzip | 328 B | 328 B | ✓ |
script-HASH.js gzip | 397 B | 397 B | ✓ |
withRouter-HASH.js gzip | 323 B | 326 B | N/A |
1afbb74e6ecf..834.css gzip | 106 B | 106 B | ✓ |
Overall change | 3.59 kB | 3.59 kB | ✓ |
Client Build Manifests
vercel/next.js canary | SukkaW/next.js eslint-plugin-presets | Change | |
---|---|---|---|
_buildManifest.js gzip | 749 B | 746 B | N/A |
Overall change | 0 B | 0 B | ✓ |
Rendered Page Sizes
vercel/next.js canary | SukkaW/next.js eslint-plugin-presets | Change | |
---|---|---|---|
index.html gzip | 523 B | 523 B | ✓ |
link.html gzip | 538 B | 537 B | N/A |
withRouter.html gzip | 518 B | 521 B | N/A |
Overall change | 523 B | 523 B | ✓ |
Edge SSR bundle Size
vercel/next.js canary | SukkaW/next.js eslint-plugin-presets | Change | |
---|---|---|---|
edge-ssr.js gzip | 128 kB | 128 kB | N/A |
page.js gzip | 204 kB | 203 kB | N/A |
Overall change | 0 B | 0 B | ✓ |
Middleware size
vercel/next.js canary | SukkaW/next.js eslint-plugin-presets | Change | |
---|---|---|---|
middleware-b..fest.js gzip | 668 B | 667 B | N/A |
middleware-r..fest.js gzip | 155 B | 156 B | N/A |
middleware.js gzip | 31.2 kB | 31.2 kB | N/A |
edge-runtime..pack.js gzip | 844 B | 844 B | ✓ |
Overall change | 844 B | 844 B | ✓ |
Next Runtimes
vercel/next.js canary | SukkaW/next.js eslint-plugin-presets | Change | |
---|---|---|---|
523-experime...dev.js gzip | 322 B | 322 B | ✓ |
523.runtime.dev.js gzip | 314 B | 314 B | ✓ |
app-page-exp...dev.js gzip | 323 kB | 323 kB | N/A |
app-page-exp..prod.js gzip | 127 kB | 127 kB | N/A |
app-page-tur..prod.js gzip | 140 kB | 140 kB | N/A |
app-page-tur..prod.js gzip | 135 kB | 135 kB | N/A |
app-page.run...dev.js gzip | 313 kB | 313 kB | N/A |
app-page.run..prod.js gzip | 123 kB | 123 kB | N/A |
app-route-ex...dev.js gzip | 37.4 kB | 37.3 kB | N/A |
app-route-ex..prod.js gzip | 25.5 kB | 25.3 kB | N/A |
app-route-tu..prod.js gzip | 25.5 kB | 25.4 kB | N/A |
app-route-tu..prod.js gzip | 25.3 kB | 25.2 kB | N/A |
app-route.ru...dev.js gzip | 39 kB | 38.9 kB | N/A |
app-route.ru..prod.js gzip | 25.3 kB | 25.2 kB | N/A |
pages-api-tu..prod.js gzip | 9.69 kB | 9.67 kB | N/A |
pages-api.ru...dev.js gzip | 11.6 kB | 11.6 kB | N/A |
pages-api.ru..prod.js gzip | 9.68 kB | 9.67 kB | N/A |
pages-turbo...prod.js gzip | 21.7 kB | 21.7 kB | N/A |
pages.runtim...dev.js gzip | 27.4 kB | 27.4 kB | N/A |
pages.runtim..prod.js gzip | 21.7 kB | 21.7 kB | N/A |
server.runti..prod.js gzip | 916 kB | 916 kB | N/A |
Overall change | 636 B | 636 B | ✓ |
build cache Overall increase ⚠️
vercel/next.js canary | SukkaW/next.js eslint-plugin-presets | Change | |
---|---|---|---|
0.pack gzip | 2.05 MB | 2.05 MB | N/A |
index.pack gzip | 72.3 kB | 73.4 kB | |
Overall change | 72.3 kB | 73.4 kB |
Diff details
Diff for middleware.js
Diff too large to display
Diff for edge-ssr.js
Diff too large to display
Diff for 1187-HASH.js
Diff too large to display
Diff for main-HASH.js
Diff too large to display
Diff for app-page-exp..ntime.dev.js
failed to diff
Diff for app-page-exp..time.prod.js
Diff too large to display
Diff for app-page-tur..time.prod.js
Diff too large to display
Diff for app-page-tur..time.prod.js
Diff too large to display
Diff for app-page.runtime.dev.js
failed to diff
Diff for app-page.runtime.prod.js
Diff too large to display
Diff for app-route-ex..ntime.dev.js
Diff too large to display
Diff for app-route-ex..time.prod.js
Diff too large to display
Diff for app-route-tu..time.prod.js
Diff too large to display
Diff for app-route-tu..time.prod.js
Diff too large to display
Diff for app-route.runtime.dev.js
Diff too large to display
Diff for app-route.ru..time.prod.js
Diff too large to display
Diff for pages-api-tu..time.prod.js
Diff too large to display
Diff for pages-api.runtime.dev.js
Diff too large to display
Diff for pages-api.ru..time.prod.js
Diff too large to display
Diff for pages-turbo...time.prod.js
Diff too large to display
Diff for pages.runtime.dev.js
Diff too large to display
Diff for pages.runtime.prod.js
Diff too large to display
Diff for server.runtime.prod.js
Diff too large to display
Take a look at these two comments and the surrounding discussion and also at the ESLint docs:
TLDR: ESLint prefers not to use a |
Adding a In the meantime, attaching an extra type-safe flat preset under the While |
Yeah I agree, just wanted to make sure that this is considered and that there is already a plan in place to match the recommendation in the next major next.js release. Ideally the flat config would have been part of 15.0 along with eslint 9 support, sadly eslint 9 support landed with such short notice before 15.0 that no one catched this in canary :( |
module.exports = plugin | ||
module.exports.flatConfig = { | ||
recommended: { | ||
name: 'eslint-plugin-next recommended', |
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.
It's probably better to call it next/recommended
, like other plugins do?
- https://github.com/un-ts/eslint-plugin-import-x/blob/ac6d2e1b39e2a0d01b981b98b58aad0eb7939c70/src/index.ts#L161
- https://github.com/Rel1cx/eslint-react/blob/c7c18c6af30d6a26108a7d47aaa0da6bd56bd404/packages/plugins/eslint-plugin/src/configs/recommended.ts#L10
- https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/7566e13531f09a040daee4c16d0cba0c28d321c4/src/index.js#L303
- https://github.com/sindresorhus/eslint-plugin-unicorn/blob/1774135a5ddbded2c89f82952e37a3e3bb01cdfa/index.js#L73
Same for core-web-vitals
config.
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.
Done in 8a7d85c
(#73873).
Add minimal flat config presets for those who are building their own eslint flat presets and want to use their own parsers and settings.
The usage would be like: