{"id":19506,"library":"eslint-config-devextreme","title":"DevExtreme ESLint Config","description":"ESLint shareable config enforcing DevExtreme team code style, based on Airbnb style guide. Current stable version 1.1.9, released monthly with community contributions. Key differentiators: vendored legacy Airbnb presets (no need for eslint-config-airbnb-base/typescript), includes framework-specific configs (jQuery, Angular, React, Vue) and test configs (Jest, QUnit, TestCafe). Built for ESLint 9.18.0 flat config. Requires heavy peer dependency set (14 plugins) but provides comprehensive linting out-of-the-box. ESM-only, no CJS support.","status":"active","version":"1.1.9","language":"javascript","source_language":"en","source_url":"https://github.com/DevExpress/eslint-config-devextreme","tags":["javascript","eslint","devextreme","devexpress"],"install":[{"cmd":"npm install eslint-config-devextreme","lang":"bash","label":"npm"},{"cmd":"yarn add eslint-config-devextreme","lang":"bash","label":"yarn"},{"cmd":"pnpm add eslint-config-devextreme","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"stylistic rules","package":"@stylistic/eslint-plugin","optional":false},{"reason":"TypeScript lint rules","package":"@typescript-eslint/eslint-plugin","optional":false},{"reason":"TypeScript parsing","package":"@typescript-eslint/parser","optional":false},{"reason":"peer dependency v9.18.0","package":"eslint","optional":false},{"reason":"import rule set","package":"eslint-plugin-import","optional":false},{"reason":"Jest lint rules","package":"eslint-plugin-jest","optional":false},{"reason":"a11y rules","package":"eslint-plugin-jsx-a11y","optional":false},{"reason":"prevents .only in tests","package":"eslint-plugin-no-only-tests","optional":false},{"reason":"QUnit lint rules","package":"eslint-plugin-qunit","optional":false},{"reason":"React lint rules","package":"eslint-plugin-react","optional":false},{"reason":"React performance rules","package":"eslint-plugin-react-perf","optional":false},{"reason":"custom rules directory","package":"eslint-plugin-rulesdir","optional":true},{"reason":"spell check rule","package":"eslint-plugin-spellcheck","optional":false},{"reason":"Vue lint rules","package":"eslint-plugin-vue","optional":false},{"reason":"CSS linting","package":"stylelint","optional":false},{"reason":"stylelint base config","package":"stylelint-config-standard","optional":false}],"imports":[{"note":"ESM-only; named export, spread into flat config array","wrong":"const typescript = require('eslint-config-devextreme')","symbol":"typescript","correct":"import { typescript } from 'eslint-config-devextreme'"},{"note":"Named export, not default; use with flat config","wrong":"import javascript from 'eslint-config-devextreme'","symbol":"javascript","correct":"import { javascript } from 'eslint-config-devextreme'"},{"note":"Case-sensitive named export 'react'","wrong":"import React from 'eslint-config-devextreme'","symbol":"react","correct":"import { react } from 'eslint-config-devextreme'"},{"note":"Named export 'angular', not 'ng'","wrong":"import { ng } from 'eslint-config-devextreme'","symbol":"angular","correct":"import { angular } from 'eslint-config-devextreme'"},{"note":"Named export 'vue' (supports Vue 3)","wrong":"import { vue2 } from 'eslint-config-devextreme'","symbol":"vue","correct":"import { vue } from 'eslint-config-devextreme'"}],"quickstart":{"code":"// eslint.config.mjs\nimport { typescript, javascript, react, testcafe, jest, qunit, spellCheck } from 'eslint-config-devextreme';\n\nexport default [\n  ...typescript,\n  ...javascript,\n  ...react,\n  ...testcafe,\n  ...jest.map(config => ({\n    ...config,\n    settings: {\n      jest: {\n        version: 29\n      }\n    }\n  })),\n  ...qunit,\n  ...spellCheck,\n  {\n    rules: {\n      'custom-rule': 'error'\n    }\n  }\n];","lang":"javascript","description":"Typical flat config setup combining multiple DevExtreme configs (TypeScript, JavaScript, React, test frameworks) with a custom rule override."},"warnings":[{"fix":"Use eslint.config.mjs with flat config format; do not use .eslintrc.* files.","message":"ESLint 9 flat config only — legacy .eslintrc files not supported","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Use import syntax; require() will throw. Set type: 'module' in package.json or use .mjs extension.","message":"ESM-only, no CommonJS compatibility","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Use DevExtreme configs directly; legacy Airbnb presets vendored as airbnb-config-legacy internal export (not recommended).","message":"Airbnb presets removed in v1.0.0","severity":"deprecated","affected_versions":">=1.0.0"},{"fix":"Remove rule from custom overrides if present; no replacement needed.","message":"'@typescript-eslint/no-parameter-properties' rule removed in v1.1.3","severity":"deprecated","affected_versions":">=1.1.3"},{"fix":"Run npm install with --legacy-peer-deps if using npm<7, or use npm>=7 which installs peers automatically.","message":"Heavy peer dependency set — many packages must be installed manually at exact version ranges","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Consider if spell check is necessary; may produce false positives with technical terms.","message":"SpellCheck config uses eslint-plugin-spellcheck which has limited maintenance","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"Change to import syntax: `import { typescript } from 'eslint-config-devextreme'`","cause":"Using require() with ESM-only package","error":"ERR_REQUIRE_ESM: require() of ES Module not supported"},{"fix":"Install all peer dependencies: `npm install --save-dev @stylistic/eslint-plugin@5.4.0 ...` (see package.json peerDependencies)","cause":"Missing peer dependency","error":"Error: Cannot find module '@stylistic/eslint-plugin'"},{"fix":"Add settings to your config: `settings: { 'import/resolver': { node: { paths: ['src'] } } }`","cause":"Rule expects settings.packageDir but not configured","error":"Configuration for rule 'import/no-extraneous-dependencies' is invalid"},{"fix":"Ensure tsconfig.json exists at project root, or configure parserOptions.project in your config","cause":"Missing or misconfigured tsconfig.json for TypeScript parser","error":"@typescript-eslint/parser requires project path but tsconfig not found"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}