solidjs-community / eslint-plugin-solid

Solid-specific linting rules for ESLint.
MIT License
217 stars 27 forks source link

Error upgrading from 0.14.2 to 0.14.3: ConfigError: Config (unnamed): Key "plugins": Cannot redefine plugin "solid". #157

Closed amatiash closed 6 days ago

amatiash commented 1 week ago

Describe the bug Receive ConfigError: Config (unnamed): Key "plugins": Cannot redefine plugin "solid". error by running eslint

To Reproduce

esling.config.js

import typescriptEslint from '@typescript-eslint/eslint-plugin'
import solid from 'eslint-plugin-solid'
import globals from 'globals'
import tsParser from '@typescript-eslint/parser'
import path from 'node:path'
import { fileURLToPath } from 'node:url'
import js from '@eslint/js'
import { FlatCompat } from '@eslint/eslintrc'

const __filename = fileURLToPath(import.meta.url)
const __dirname = path.dirname(__filename)
const compat = new FlatCompat({
    baseDirectory: __dirname,
    recommendedConfig: js.configs.recommended,
    allConfig: js.configs.all,
})

export default [...compat.extends(
    'eslint:recommended',
    'plugin:@typescript-eslint/recommended',
    'plugin:solid/typescript',
    'paper',
), {
    plugins: {
        '@typescript-eslint': typescriptEslint,
        solid,
    },

    languageOptions: {
        globals: {
            ...globals.browser,
            ...Object.fromEntries(Object.entries(globals.node).map(([key]) => [key, 'off'])),
        },

        parser: tsParser,
        ecmaVersion: 2020,
        sourceType: 'module',
    }
}]

Expected behavior No error

Environment (please complete the following information):

jcarpe commented 1 week ago

FWIW - I can confirm this as well. Had the same experience.

When I drop back to eslint-plugin-solid version 0.14.2, no issue.

amatiash commented 1 week ago

When I drop back to eslint-plugin-solid version 0.14.3, no issue.

@jcarpe Did you mean 0.14.2?

jcarpe commented 1 week ago

Apologies - updated the comment, but yes. When dropping back to 0.14.2, no problem.

joshwilsonvu commented 1 week ago

I think this might be an incompatibility with using compat.extends. Extending 'plugin:solid/typescript' should already define the solid plugin, so you may need to remove it from your plugins object:

    plugins: {
        '@typescript-eslint': typescriptEslint,
-       solid,
    },

    languageOptions: {

Does this resolve your issue?

amatiash commented 6 days ago

Does this resolve your issue?

It does! Thank you @joshwilsonvu !!!