{"id":19503,"library":"eslint-config-decent","title":"eslint-config-decent","description":"A comprehensive ESLint configuration for TypeScript projects, currently at v4.2.37. Released under MIT license, it provides a curated set of linting rules from ESLint, typescript-eslint, unicorn, jsdoc, vitest, security, react, testing-library, and stylistic plugin. It also offers an experimental oxlint mirror (~95% rule coverage) and an Agent Skill for AI assistants. Designed for ESLint flat config (v9+), requires Node >=22.13.0 and TypeScript >=5.5.0. Differentiator: opinionated yet configurable, with first-class oxlint support and an AI skill for enforcing standards.","status":"active","version":"4.2.37","language":"javascript","source_language":"en","source_url":"https://github.com/jgeurts/eslint-config-decent","tags":["javascript","eslint","oxlint","config","decent","typescript"],"install":[{"cmd":"npm install eslint-config-decent","lang":"bash","label":"npm"},{"cmd":"yarn add eslint-config-decent","lang":"bash","label":"yarn"},{"cmd":"pnpm add eslint-config-decent","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"peer dependency; the config extends ESLint's flat config system, requires v9 or v10","package":"eslint","optional":false},{"reason":"peer dependency; type-aware rules require TypeScript >=5.5.0","package":"typescript","optional":false},{"reason":"peer dependency; provides the TypeScript-specific rules enabled in the config","package":"@typescript-eslint/eslint-plugin","optional":false},{"reason":"peer dependency for oxlint mirror config; optional if only using ESLint","package":"oxlint","optional":true},{"reason":"peer dependency for oxlint type-aware linting; optional","package":"oxlint-tsgolint","optional":true}],"imports":[{"note":"ESM-only; requires Node >=22.13.0. CommonJS require() will fail.","wrong":"const config = require('eslint-config-decent')","symbol":"config","correct":"import { config } from 'eslint-config-decent'"},{"note":"The oxlint helper is in a separate subpath export. If using TypeScript, use .ts extension for oxlint config files.","wrong":"import { oxlintConfig } from 'eslint-config-decent'","symbol":"oxlintConfig","correct":"import { oxlintConfig } from 'eslint-config-decent/oxlint'"},{"note":"tsconfigRootDir is required for type-aware rules. Omission leads to parser errors.","wrong":"export default config({})","symbol":"config","correct":"import { config } from 'eslint-config-decent'\nexport default config({ tsconfigRootDir: import.meta.dirname })"}],"quickstart":{"code":"// eslint.config.mjs\nimport { config } from 'eslint-config-decent';\n\nexport default config({\n  tsconfigRootDir: import.meta.dirname,\n});","lang":"javascript","description":"Minimal setup using ESM flat config. Imports the config function and passes tsconfigRootDir for type-aware linting."},"warnings":[{"fix":"Migrate to eslint.config.js/.mjs flat config format. See https://eslint.org/docs/latest/use/configure/migration-guide","message":"v4.x requires ESLint v9 flat config – does NOT work with .eslintrc.*","severity":"breaking","affected_versions":">=4.0.0"},{"fix":"Upgrade Node.js to >=22.13.0 (LTS). Use process.cwd() or __dirname workaround if on older Node, but not officially supported.","message":"Node.js >=22.13.0 required; older versions will fail to parse ESM features or lack import.meta.dirname","severity":"breaking","affected_versions":">=4.0.0"},{"fix":"Always provide tsconfigRootDir (e.g., import.meta.dirname). For complex monorepos, set it to the root of each tsconfig.","message":"tsconfigRootDir must be passed to config(). If omitted, type-aware rules may silently not run or throw errors","severity":"gotcha","affected_versions":">=4.0.0"},{"fix":"No action needed; will be restored when oxlint implements it natively. You can manually enable via overrides if needed.","message":"oxlint's 'naming-convention' rule is currently disabled (unrunnable under JS bridge).","severity":"deprecated","affected_versions":"==4.2.37"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"Run `npm install -D eslint-config-decent` (or yarn/pnpm equivalent). Ensure eslint.config.mjs is in the project root.","cause":"Package not installed or not in node_modules.","error":"Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'eslint-config-decent' imported from /path/to/eslint.config.mjs"},{"fix":"Use `import { config } from 'eslint-config-decent'` (named import). Do NOT use `require('eslint-config-decent')`.","cause":"Using default import instead of named import, or CommonJS require().","error":"TypeError: config is not a function"},{"fix":"Ensure tsconfig.json sets module to 'es2022' or 'node16', and Node.js version >=22.13.0.","cause":"TypeScript or older Node version does not support import.meta.dirname.","error":"Parsing error: The 'import.meta.dirname' meta property is only supported when the 'module' option is set to 'es2022' or later, or the 'target' option is set to 'es2022' or later."}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}