Skip to content
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

Docs: eslint v9 #7909

Closed
ramirezj opened this issue Apr 6, 2024 · 18 comments · Fixed by #9515
Closed

Docs: eslint v9 #7909

ramirezj opened this issue Apr 6, 2024 · 18 comments · Fixed by #9515
Labels
area: docs Improvements or additions to documentation good first issue Good for newcomers

Comments

@ramirezj
Copy link

ramirezj commented Apr 6, 2024

What is the improvement or update you wish to see?

Documentation on supporting users who have migrated to the new eslint.config.js config file or who want to continue to use estlintrc but run >= v9 of eslint

Aiming to take a look at this myself, but flagging in case someone has more time to spend on this or a solution already

Is there any context that might help us understand?

With the recent v9 release of eslint, it now uses flat config files by default and support for the deprecated eslintrc config file will be removed entirely in v10

Does the docs page already exist? Please link to it.

https://turbo.build/repo/docs/handbook/linting/eslint

@arlyon arlyon added the area: docs Improvements or additions to documentation label Apr 8, 2024
@anthonyshew
Copy link
Contributor

Would definitely appreciate help on this one! I just explored this a little bit and it looks like this will be a net-positive change for Turborepo users, but haven't had time to explore figuring out the new syntax.

@ramirezj
Copy link
Author

Digging in between other work, FYI

@ch-o-min

This comment was marked as spam.

@MickL
Copy link

MickL commented Jun 11, 2024

Is there any workaround for eslint configs like the one from Turbo that dont have a flat config yet? :)

@ChurroC
Copy link

ChurroC commented Jul 29, 2024

I recently created my own solution that works pretty well. I just created a new project and just ported over the eslint in this repo: https://github.com/ChurroC/EslintV9-with-TurboPack. This works for me but it is pretty sketch currently.

@controversial
Copy link

The following flat config works great for me:

import turboPlugin from 'eslint-plugin-turbo';

export default {
  name: 'eslint-config-turbo (recreated flat)',

  plugins: {
    turbo: { rules: turboPlugin.rules },
  },

  rules: {
    'turbo/no-undeclared-env-vars': 'error',
  },
}

@Merieli
Copy link

Merieli commented Aug 8, 2024

import turboPlugin from 'eslint-plugin-turbo';

export default {
  name: 'eslint-config-turbo (recreated flat)',

  plugins: {
    turbo: { rules: turboPlugin.rules },
  },

  rules: {
    'turbo/no-undeclared-env-vars': 'error',
  },
}

I'm not sure I understood your configuration @controversial, would this export file have to be in the root of the monorepo?

@controversial
Copy link

controversial commented Aug 8, 2024

@Merieli The exported object is one configuration object

A minimal standalone eslint.config.js would live at the root of the monorepo and export an array containing this configuration object:

// eslint.config.js

import turboPlugin from 'eslint-plugin-turbo';

export default [
  // ... more configuration objects ...

  {
    name: 'eslint-config-turbo (recreated flat)',
    plugins: {
      turbo: { rules: turboPlugin.rules },
    },
    rules: {
      'turbo/no-undeclared-env-vars': 'error',
    },
  },
];

You’d usually include multiple such configuration objects in the top-level array

@Merieli
Copy link

Merieli commented Aug 8, 2024

@controversial Okay, understand... But where you installed the dependencie? Has any repository to reproduce? I am obtain erros with this config, because my linter in files do'nt work and the script to lint throw an error as bellow:

npm error Lifecycle script `lint` failed with error:
│ npm error code 1
│ npm error path /home/..../packages/sdk
│ npm error workspace @hub/sdk@0.0.0
│ npm error location /home/.../packages/sdk
│ npm error command failed
│ npm error command sh -c eslint .

Even though eslint runs and finds errors in the files, there is something wrong with my config.

@controversial
Copy link

The configuration example I shared depends on having at least eslint@9 and eslint-plugin-turbo@2 installed.

I think your error is likely unrelated to eslint-plugin-turbo and therefore off topic for this issue.

@SPAHI4
Copy link

SPAHI4 commented Oct 29, 2024

I'm new to turborepo, should I have a single flat config file in the root dir, or a shared config that would be extended in every package like examples for the old config?

@anthonyshew
Copy link
Contributor

We still recommend having a configuration file in each package for better cache hit ratios.

@appano1
Copy link

appano1 commented Nov 6, 2024

const config = {
settings,
plugins: ["turbo"],
rules: {
[`turbo/${RULES.noUndeclaredEnvVars}`]: "error",
},
};

Because of the config.settings above, I did this. It works pretty well.

import turbo from 'eslint-plugin-turbo';
/** @type {import('eslint').Linter.Config} */
export default {
  plugins: {
    turbo,
  },
  rules: {
    ...turbo.configs.recommended.rules,
  },
  settings: {
    ...turbo.configs.recommended.settings,
  },
};

@rinart73
Copy link

rinart73 commented Nov 21, 2024

So.. in the end is there a working Turborepo starter with flat ESLint config that uses multiple files (as recommended by Turborepo team) instead of root global config? Or it's just not possible? I'd like to do everything properly if possible.

@ChurroC
Copy link

ChurroC commented Nov 21, 2024

So.. in the end is there a working Turborepo starter with flat ESLint config that uses multiple files (as recommended by Turborepo team) instead of root global config? Or it's just not possible? I'd like to do everything properly if possible.

Above I had a template for flat eslint setup that uses multiple files. This was my eslint package folder: https://github.com/ChurroC/EslintV9-with-TurboPack/tree/main/packages/eslint-config.

@anthonyshew
Copy link
Contributor

anthonyshew commented Nov 22, 2024

Just want to update quick:

Thanks for the patience everyone!

@anthonyshew
Copy link
Contributor

anthonyshew commented Nov 25, 2024

#9515 updates READMEs and docs!

Thanks, everyone!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area: docs Improvements or additions to documentation good first issue Good for newcomers
Projects
None yet