eslint-plugin-solid
raw JSON → 0.14.5 verified Sat Apr 25 auth: no javascript
Solid-specific linting rules for ESLint. Current stable version is 0.14.5, released occasionally with community contributions. It eases Solid's learning curve by catching reactivity pitfalls and migrating React patterns. Differentiators include rules for Solid's reactive system, JSX, and destructuring. Supports ESLint v6–v9 and TypeScript. Actively maintained, approaching 1.0.0.
Common errors
error Error: Failed to load plugin 'solid' declared in '.eslintrc.*': Cannot find module 'eslint-plugin-solid' ↓
cause Missing or incorrect installation of eslint-plugin-solid.
fix
Run 'npm install --save-dev eslint eslint-plugin-solid' or equivalent.
error TypeError: eslint-plugin-solid is not a plugin ↓
cause Using a configuration object that declares a string plugin name but the require fails.
fix
Ensure the plugin is installed and loaded correctly; use 'plugins: ["solid"]' in .eslintrc.
error ESLint configuration in eslint.config.js is invalid: Config (unnamed): The object must contain a 'plugins' key if it contains 'rules'. ↓
cause Misconfigured flat config without properly importing the plugin object.
fix
Import solid from 'eslint-plugin-solid' and include it as an object with 'plugins: { solid }'.
error Parsing error: Unexpected token < ↓
cause Missing JSX parser options or parser configuration.
fix
Set 'parserOptions.ecmaFeatures.jsx: true' or use a JSX-aware parser like @typescript-eslint/parser.
Warnings
breaking ESLint v9 support requires plugin version >=0.14.0. ↓
fix Upgrade to eslint-plugin-solid@^0.14.0 or later.
deprecated The 'jsx-no-undef' rule is deprecated and will be removed in v1.0.0. ↓
fix Remove the rule from your configuration; use 'no-undef' with JSX support instead.
gotcha TypeScript users must use the 'typescript' config, not 'recommended'. ↓
fix Extend 'plugin:solid/typescript' instead of 'plugin:solid/recommended'.
gotcha Flat config requires plugin version >=0.13.0 for proper support. ↓
fix Upgrade to eslint-plugin-solid@^0.13.0 or later.
gotcha The 'no-destructure' rule may conflict with some TypeScript patterns; use the TypeScript config to disable it. ↓
fix Use 'plugin:solid/typescript' to automatically disable overlapping rules.
Install
npm install eslint-plugin-solid yarn add eslint-plugin-solid pnpm add eslint-plugin-solid Imports
- default wrong
const solid = require('eslint-plugin-solid')correctimport solid from 'eslint-plugin-solid' - configs wrong
import configs from 'eslint-plugin-solid'correctimport { configs } from 'eslint-plugin-solid' - rules
import { rules } from 'eslint-plugin-solid'
Quickstart
// eslint.config.js (Flat Config)
import js from "@eslint/js";
import solid from "eslint-plugin-solid";
export default [
js.configs.recommended,
solid.configs.recommended,
{
files: ["**/*.jsx", "**/*.tsx"],
languageOptions: {
ecmaFeatures: { jsx: true }
}
}
];