{"id":25491,"library":"eslint-config-ts-prefixer","title":"eslint-config-ts-prefixer","description":"A zero-extend ESLint flat config for TypeScript projects, providing a curated ruleset focused on runtime safety and import organization via eslint-plugin-import-x. Current stable version is v4.2.0, released in early 2025 with support for ESLint v9/v10 and TypeScript 5. It differs from other shared configs by avoiding any base config inheritance, making all rules explicit for transparency, and heavily emphasizing fixable import sorting and formatting rules. The package migrated from eslint-plugin-import to eslint-plugin-import-x in v4.1.5 and dropped prettier-plugin in v4.0.0, requiring manual prettier setup if needed.","status":"active","version":"4.2.0","language":"javascript","source_language":"en","source_url":"https://github.com/laststance/eslint-config-ts-prefixer","tags":["javascript"],"install":[{"cmd":"npm install eslint-config-ts-prefixer","lang":"bash","label":"npm"},{"cmd":"yarn add eslint-config-ts-prefixer","lang":"bash","label":"yarn"},{"cmd":"pnpm add eslint-config-ts-prefixer","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency: ESLint v9 or v10 required for flat config compatibility.","package":"eslint","optional":false},{"reason":"Peer dependency: TypeScript 5+ required for type-aware lint rules.","package":"typescript","optional":false},{"reason":"Transitive dependency used by the config for import organization rules.","package":"eslint-plugin-import-x","optional":false},{"reason":"Transitive dependency for resolving TypeScript imports.","package":"eslint-import-resolver-typescript","optional":false}],"imports":[{"note":"defineConfig is re-exported from eslint/config, not eslint directly.","wrong":"import { defineConfig } from 'eslint'","symbol":"defineConfig","correct":"import { defineConfig } from 'eslint/config'"},{"note":"The config is exported as default, not named.","wrong":"import { tsPrefixer } from 'eslint-config-ts-prefixer'","symbol":"tsPrefixer (default export)","correct":"import tsPrefixer from 'eslint-config-ts-prefixer'"},{"note":"tsPrefixer is an array, so spread it inside defineConfig.","wrong":"export default defineConfig(tsPrefixer)","symbol":"flat config array","correct":"export default defineConfig([...tsPrefixer, { /* overrides */ }])"}],"quickstart":{"code":"// eslint.config.js\nimport { defineConfig } from 'eslint/config';\nimport tsPrefixer from 'eslint-config-ts-prefixer';\n\nexport default defineConfig([\n  ...tsPrefixer,\n  {\n    languageOptions: {\n      parserOptions: {\n        tsconfigRootDir: import.meta.dirname,\n      },\n    },\n  },\n]);\n\n// package.json script\n// \"lint\": \"eslint . --concurrency=auto --max-warnings=0\"\n// \"lint:fix\": \"eslint . --fix --concurrency=auto --max-warnings=0\"","lang":"javascript","description":"Basic setup: import config, spread into defineConfig, set tsconfigRootDir for type-aware rules."},"warnings":[{"fix":"Install prettier and eslint-plugin-prettier manually, or use Prettier standalone.","message":"v4.0.0 removed prettier-plugin; you must configure Prettier separately if you still want formatting.","severity":"breaking","affected_versions":">=4.0.0"},{"fix":"Migrate to eslint.config.js using flat config format. See ESLint migration guide.","message":"v4.0.0 requires ESLint flat config (eslint.config.js) — legacy .eslintrc not supported.","severity":"breaking","affected_versions":">=4.0.0"},{"fix":"If you rely on old import plugin rules, update rule names to match eslint-plugin-import-x.","message":"v4.1.5 migrated from eslint-plugin-import to eslint-plugin-import-x — custom import rule overrides may need adjustment.","severity":"breaking","affected_versions":">=4.1.5"},{"fix":"Set parserOptions.tsconfigRootDir to import.meta.dirname (or __dirname in CJS).","message":"tsconfigRootDir must be set explicitly to avoid picking up wrong tsconfig from node_modules.","severity":"gotcha","affected_versions":">=4.0.0"},{"fix":"Add separate overrides for .js/.mjs files if needed, or use a different config for JS.","message":"The config does not include any JavaScript-specific rules; only TypeScript files are linted.","severity":"gotcha","affected_versions":">=4.0.0"},{"fix":"Upgrade to flat config and eslint-config-ts-prefixer v4.","message":"v1.x used .eslintrc format; v4.x is incompatible.","severity":"deprecated","affected_versions":">=4.0.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Run `npm install --save-dev eslint-config-ts-prefixer` and ensure you import as 'eslint-config-ts-prefixer' (no scope).","cause":"eslint cannot resolve the config; missing install or incorrect import path.","error":"Error: Cannot find module 'eslint-config-ts-prefixer'"},{"fix":"Import { defineConfig } from 'eslint/config'.","cause":"Using wrong import for defineConfig (from 'eslint' instead of 'eslint/config').","error":"TypeError: defineConfig is not a function"},{"fix":"Make sure to spread inside an array: defineConfig([...tsPrefixer, ...])","cause":"Spreading tsPrefixer array incorrectly inside defineConfig arguments.","error":"Error: Config array must contain objects or functions, got array"},{"fix":"Add languageOptions.parserOptions.tsconfigRootDir: import.meta.dirname","cause":"tsconfigRootDir not set in user config.","error":"Parsing error: The 'parserOptions.tsconfigRootDir' option must be set when using project service."}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}