Live data from Hacker News

ESLint v9.0

eslint.org

11–20 of 49 posts

Re: ESLint v9.0

#11

I tried to migrate a few nights ago but gave up for now as it was too many changes. I will give it another go this week on a full stomach.

I migrated a small project few hours ago and their docs covered most of what I needed. The linked post here has a link to https://eslint.org/docs/latest/use/migrate-to-9.0.0, but earlier today I used only this page: https://eslint.org/docs/latest/use/configure/migration-guide

Re: ESLint v9.0

#12
post #5

Earlier quoted context omitted.

So much of it is completely unnecessary breaking changes too. A good example is the config file, out of the box they no longer support using `.eslintrc.*` (you can still get this behavior back with a config flag), you're now expected to use `eslint.config.js` instead. So in short, they're just making every single project out there that relies on ESLint go and either add a flag or rename one file — for what?

Could it be a gradual move towards standardizing on js config files? Perhaps version 9 will only parse js configs, and this is a step towards that. Edit: Here’s some info about the gradual migration to flat config and deprecation of eslintrc: https://eslint.org/blog/2023/10/flat-config-rollout-plans/ It seems like it’s been well thought out.

I'm not really seeing the argument, right now they're also pushing unnecessary work onto everyone who uses `.eslintr.js` which already is a js config file. Yes, it is a small amount of work to fix, but it still means you have to go and read the changes and figure out what the breaking changes are to begin with.

Re: ESLint v9.0

#13

Earlier quoted context omitted.

Could it be a gradual move towards standardizing on js config files? Perhaps version 9 will only parse js configs, and this is a step towards that. Edit: Here’s some info about the gradual migration to flat config and deprecation of eslintrc: https://eslint.org/blog/2023/10/flat-config-rollout-plans/ It seems like it’s been well thought out.

I'm not really seeing the argument, right now they're also pushing unnecessary work onto everyone who uses `.eslintr.js` which already is a js config file. Yes, it is a small amount of work to fix, but it still means you have to go and read the changes and figure out what the breaking changes are to begin with.

It's in the release notes, and those also include a migration guide.

I'm not sure what more you would want. It's a major version upgrade.

Re: ESLint v9.0

#14
post #5

I tried to migrate a few nights ago but gave up for now as it was too many changes. I will give it another go this week on a full stomach.

So much of it is completely unnecessary breaking changes too. A good example is the config file, out of the box they no longer support using `.eslintrc.*` (you can still get this behavior back with a config flag), you're now expected to use `eslint.config.js` instead. So in short, they're just making every single project out there that relies on ESLint go and either add a flag or rename one file — for what?

There's a good write-up of the shortcomings that the new config file is trying to address here: https://eslint.org/blog/2022/08/new-config-system-part-2/

E.g., faster and simpler file access from removing tree-walking for multiple `.eslintrc.*`; better defaults in line with modern JavaScript; better compatibility with modules and Node.js's own file loading.

(And I suspect there's an element of "As long as we're having to introduce a breaking change, let's make it explicitly breaking by also changing the filename.")

Re: ESLint v9.0

#15
post #13

Earlier quoted context omitted.

I'm not really seeing the argument, right now they're also pushing unnecessary work onto everyone who uses `.eslintr.js` which already is a js config file. Yes, it is a small amount of work to fix, but it still means you have to go and read the changes and figure out what the breaking changes are to begin with.

It's in the release notes, and those also include a migration guide. I'm not sure what more you would want. It's a major version upgrade.

My qualm isn't really that it's hard to fix it once you know it's broken, or to find it in the release notes, but rather that this change doesn't need to be breaking to begin with. I can understand changing the docs and changing the default value, I can also understand dropping the plaintext config file, but why also break every project that currently relies on `.eslintrc.js`? From the tooling side, it's one extra line to stat two file names rather than one.

Re: ESLint v9.0

#16
post #5

I tried to migrate a few nights ago but gave up for now as it was too many changes. I will give it another go this week on a full stomach.

So much of it is completely unnecessary breaking changes too. A good example is the config file, out of the box they no longer support using `.eslintrc.*` (you can still get this behavior back with a config flag), you're now expected to use `eslint.config.js` instead. So in short, they're just making every single project out there that relies on ESLint go and either add a flag or rename one file — for what?

Err... isn't the whole point of a big number release to introduce big, breaking changes? All major projects have breaking changes... but only the nice ones do us the courtesy of saving breaking changes for major release milestones

Re: ESLint v9.0

#17
post #10

Earlier quoted context omitted.

Check biome or oxlint. I don't think any of them support all the rules of eslint

I've been using biome since it was called rome. It's an excellent formatter / linter and reduces the configuration down to a single npm install and a single json file. I highly recommend people try it out and ditch the configuration nightmare that is eslint.

Performance is insane too

Re: ESLint v9.0

#18
post #5

Earlier quoted context omitted.

So much of it is completely unnecessary breaking changes too. A good example is the config file, out of the box they no longer support using `.eslintrc.*` (you can still get this behavior back with a config flag), you're now expected to use `eslint.config.js` instead. So in short, they're just making every single project out there that relies on ESLint go and either add a flag or rename one file — for what?

Err... isn't the whole point of a big number release to introduce big, breaking changes? All major projects have breaking changes... but only the nice ones do us the courtesy of saving breaking changes for major release milestones

> Err... isn't the whole point of a big number release to introduce big, breaking changes?

Certainly not. Breaking changes should still be avoided as much as possible.

Re: ESLint v9.0

#19
I've started using https://biomejs.dev/ which is written in Rust.

It's super fast compared to ESLint and doesn't require a ton of plugins to work (you just install the one @biomejs/biome package and that's it). The configuration is dead simple as well and it has VS Code and intelliJ support too. It also does formatting / prettifying in the same package as well.

One downside though is it does not have support for Standard JS. They go by their own rules, which is fine for a new project, but existing projects that use Standard JS or have custom rules will probably take time to convert over, and not all ESLint rules are supported either.

https://github.com/biomejs/biome/discussions/2070#discussion...

Re: ESLint v9.0

#20
Think I will wait until there is some sort of codemod available to switch to the flat config format :)
Post reply on HN