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

Research Spike: ESLint 9 compatibility #477

Open
4 tasks done
ChristianMurphy opened this issue Oct 5, 2023 · 13 comments
Open
4 tasks done

Research Spike: ESLint 9 compatibility #477

ChristianMurphy opened this issue Oct 5, 2023 · 13 comments

Comments

@ChristianMurphy
Copy link
Member

Initial checklist

Problem

ESLint 9 is changing the plugin API: https://eslint.org/blog/2023/09/preparing-custom-rules-eslint-v9/
There may be changes needed in ESLint-MDX

Solution

Check to see if any changed/removed APIs are used, migrate if needed.

Alternatives

  • No change may be needed
  • We could remain on eslint 8 for a while if the migration is challenging
@JounQin
Copy link
Member

JounQin commented Dec 5, 2023

image

I don't see how to test eslint@9 at this point.

@ChristianMurphy
Copy link
Member Author

@remcohaszing
Copy link
Member

Since the new flat config no longer resolves files, and supports eslint.config.mjs, I think ESLint MDX integrations can switch to ESM.

@JounQin
Copy link
Member

JounQin commented Dec 30, 2023

Since the new flat config no longer resolves files, and supports eslint.config.mjs, I think ESLint MDX integrations can switch to ESM.

I'd like to keep dual. Legacy .eslintrc configs are still supported.

@ChristianMurphy
Copy link
Member Author

Legacy configuration are deprecated https://eslint.org/blog/2023/12/eslint-v9.0.0-alpha.0-released/

There are far less quirks and hacks packaging as pure ESM, rather than dealing with dual packaging limitations.

@JounQin
Copy link
Member

JounQin commented Dec 30, 2023

#496

@ChristianMurphy

worker.mts will bypass all the limitations.

They're deprecated but still supported. I don't want to break anyone's current workflow before they're ready including myself.

For example, compatibility with other plugins.

import-js/eslint-plugin-import#2948 (comment)

@tianyingchun
Copy link

What's the plan?

@karlhorky
Copy link

karlhorky commented Aug 2, 2024

If you don't use Markdown, then the current version eslint-plugin-mdx@3.1.5 appears to work in ESLint v9 by copying the flat config which is exported:

eslint.config.js or eslint.config.mjs

import eslintMdx from 'eslint-mdx';
import mdx from 'eslint-plugin-mdx';

/** @type {import('eslint').Linter.FlatConfig} */
const config = [
  {
    files: ['**/*.mdx'],
    languageOptions: {
      sourceType: 'module',
      ecmaVersion: 'latest',
      parser: eslintMdx,
      globals: {
        React: false,
      },
    },
    plugins: {
      mdx,
    },
    rules: {
      'mdx/remark': 'warn',
      'no-unused-expressions': 'error',
      'react/react-in-jsx-scope': 0,
    },
  },
];

export default config;

@tianyingchun
Copy link

i have integrating mdx into a plugin it can works fine for eslint V9
https://github.com/hyperse-io/eslint-config-hyperse

@tianyingchun
Copy link

what's plan for ESLint V9, i used it in local, it seems that everything works fine except we need to bump eslint-plugin-markdown to latest version (5.1.0) for now it used "eslint-plugin-markdown": "^3.0.1"?

@reduckted
Copy link

ESLint v8 is EOL in one month (https://eslint.org/version-support/). Would you consider dropping v8 support to make it easier to migrate this plugin to v9?

If anyone really needs v8 support, they can continue to use the current version of this plugin.

@remcohaszing
Copy link
Member

@eslint/markdown (formerly eslint-plugin-markdown 6.0.0 is ESM only. I think it’s fair to drop CJS support in other ESLint plugins as well.

@tianyingchun
Copy link

it's time to drop cjs +1 :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

6 participants