{"id":25481,"library":"eslint-config-firstvet","title":"FirstVet ESLint Config","description":"FirstVet's shared ESLint configuration (v9.0.1) combining Airbnb base, Prettier, TypeScript, Vue, and Tailwind CSS rules. Extends plugins for import resolution, JSON formatting, and Vue parsing. Released as needed by FirstVet development. Differentiators: opinionated all-in-one config for FirstVet projects, includes autoformatting via ESLint, and requires peer dependencies via install-peerdeps.","status":"active","version":"9.0.1","language":"javascript","source_language":"en","source_url":"https://github.com/firstvetcom/lint-rules","tags":["javascript","FirstVet"],"install":[{"cmd":"npm install eslint-config-firstvet","lang":"bash","label":"npm"},{"cmd":"yarn add eslint-config-firstvet","lang":"bash","label":"yarn"},{"cmd":"pnpm add eslint-config-firstvet","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"TypeScript lint rules","package":"@typescript-eslint/eslint-plugin","optional":false},{"reason":"TypeScript parser","package":"@typescript-eslint/parser","optional":false},{"reason":"Core linter","package":"eslint","optional":false},{"reason":"Base style rules","package":"eslint-config-airbnb-base","optional":false},{"reason":"Disables Prettier-conflicting rules","package":"eslint-config-prettier","optional":false},{"reason":"Resolve import aliases","package":"eslint-import-resolver-alias","optional":false},{"reason":"Import/export rules","package":"eslint-plugin-import","optional":false},{"reason":"JSON formatting","package":"eslint-plugin-json-format","optional":false},{"reason":"Prettier as ESLint rule","package":"eslint-plugin-prettier","optional":false},{"reason":"Tailwind CSS class ordering","package":"eslint-plugin-tailwindcss","optional":false},{"reason":"Vue-specific lint rules","package":"eslint-plugin-vue","optional":false},{"reason":"Code formatter","package":"prettier","optional":false},{"reason":"Parse Vue single-file components","package":"vue-eslint-parser","optional":false}],"imports":[{"note":"Use the short name 'firstvet' in eslintrc; the full npm package name also works but is redundant.","wrong":"extends: ['eslint-config-firstvet']","symbol":"firstvet","correct":"extends: ['firstvet']"},{"note":"Adds Vue-specific rules; requires vue-eslint-parser.","wrong":"extends: ['firstvet/vue']","symbol":"firstvet/vue","correct":"extends: ['firstvet/vue']"},{"note":"Use npx install-peerdeps to automatically install all peer dependencies, which are many.","wrong":"npm install eslint-config-firstvet --save-dev (missing peer deps)","symbol":"install-peerdeps","correct":"npx install-peerdeps -D eslint-config-firstvet"}],"quickstart":{"code":"// 1. Install with peer deps (requires npm 5+):\n// npx install-peerdeps -D eslint-config-firstvet\n\n// 2. Create .eslintrc.json:\n{\n  \"extends\": [\"firstvet\"]\n}\n\n// For Vue projects use:\n// { \"extends\": [\"firstvet/vue\"] }\n\n// 3. VSCode settings.json:\n// {\n//   \"[javascript]\": { \"editor.formatOnSave\": false, \"editor.formatOnPaste\": false },\n//   \"[json]\": { \"editor.formatOnSave\": false, \"editor.formatOnPaste\": false },\n//   \"[vue]\": { \"editor.formatOnSave\": false, \"editor.formatOnPaste\": false },\n//   \"[typescript]\": { \"editor.formatOnSave\": false, \"editor.formatOnPaste\": false },\n//   \"eslint.validate\": [\"javascript\", \"json\", \"vue\", \"typescript\"],\n//   \"editor.codeActionsOnSave\": { \"source.fixAll.eslint\": true },\n//   \"prettier.disableLanguages\": [\"javascript\", \"json\", \"vue\", \"typescript\"],\n//   \"path-intellisense.mappings\": { \"@\": \"${workspaceRoot}/src\" }\n// }","lang":"javascript","description":"Installs peer deps, configures .eslintrc.json for JS or Vue, and sets up VSCode autoformatting on save."},"warnings":[{"fix":"Open the subdirectory as the project root in VSCode (File > Open Folder) so that node_modules are resolved correctly.","message":"VSCode autoformatting fails when project is opened in a subdirectory; ESLint plugin cannot find plugins.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Ensure eslint-plugin-tailwindcss is installed at ^3.18.0 || ^4.0.0-beta.0 as specified in peer dependencies.","message":"eslint-plugin-tailwindcss requires v3.18.0 or v4.0.0-beta.0; mismatched version causes rule errors.","severity":"breaking","affected_versions":">=9.0.0"},{"fix":"Remove prettier.disableLanguages and set editor.defaultFormatter to null for those languages, or use ESLint as the formatter.","message":"prettier.disableLanguages is deprecated in newer Prettier VSCode extensions; use editor.defaultFormatter instead.","severity":"deprecated","affected_versions":">=0.0.0"},{"fix":"Set editor.formatOnSave to false and rely solely on ESLint's fixAll action.","message":"If using eslint-plugin-prettier, conflicting formatting rules may arise if both Prettier and ESLint format on save.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Ensure eslint-import-resolver-alias is installed and configured in .eslintrc if using path aliases.","message":"Path intellisense mapping '@' requires eslint-import-resolver-alias to be configured; otherwise imports may not resolve.","severity":"gotcha","affected_versions":">=0.0.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Run npx install-peerdeps -D eslint-config-firstvet to install all missing peers.","cause":"Peer dependencies not installed.","error":"Error: Failed to load plugin 'prettier' declared in '.eslintrc.json': Cannot find module 'eslint-plugin-prettier'"},{"fix":"Install vue-eslint-parser: npm install -D vue-eslint-parser","cause":"Missing peer dependency for Vue config.","error":"Error: Cannot find module 'vue-eslint-parser'"},{"fix":"Ensure @typescript-eslint/parser is installed and no parserOptions overrides it.","cause":"Missing @typescript-eslint/parser or incorrect parser configuration.","error":"Parsing error: The keyword 'import' is reserved"},{"fix":"Install eslint-plugin-tailwindcss@^3.18.0 or @^4.0.0-beta.0 (not v2.x).","cause":"Incompatible version of eslint-plugin-tailwindcss.","error":"ESLint: TypeError: this.options is not iterable (eslint-plugin-tailwindcss)"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}