{"id":10816,"library":"eslint-config-love","title":"ESLint Config Love","description":"eslint-config-love is a highly opinionated and strict ESLint shareable configuration specifically designed for TypeScript projects, prioritizing code safety and explicit patterns over conciseness. It currently stands at version 153.0.0, indicative of its extremely rapid development cycle where even minor rule additions or dependency updates are considered breaking changes, leading to frequent major version bumps (often weekly or bi-weekly). This configuration differentiates itself by intentionally avoiding formatting rules, instead advocating for dedicated code formatters like Prettier. It also refrains from duplicating checks already enforced by TypeScript's strict mode and steers clear of library- or framework-specific rules, maintaining a focus on core JavaScript and TypeScript linting. It integrates rules from various sources including ESLint itself, `@typescript-eslint`, `@eslint-community/eslint-comments`, `n`, `promise`, and `import` plugins.","status":"active","version":"153.0.0","language":"javascript","source_language":"en","source_url":"https://github.com/mightyiam/eslint-config-love","tags":["javascript","check","checker","code","code checker","code linter","code standards","code style","enforce","typescript"],"install":[{"cmd":"npm install eslint-config-love","lang":"bash","label":"npm"},{"cmd":"yarn add eslint-config-love","lang":"bash","label":"yarn"},{"cmd":"pnpm add eslint-config-love","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency for the core ESLint linter functionality.","package":"eslint","optional":false},{"reason":"Peer dependency as this configuration is specifically for TypeScript projects and leverages TypeScript's type information.","package":"typescript","optional":false}],"imports":[{"note":"The configuration object is exported as the default in an ESM environment.","wrong":"import { love } from 'eslint-config-love'","symbol":"love","correct":"import love from 'eslint-config-love'"},{"note":"For CommonJS, dynamic `import()` is required to load the ESM-first package; direct `require()` will not work.","wrong":"const love = require('eslint-config-love')","symbol":"love","correct":"const { default: love } = await import('eslint-config-love')"}],"quickstart":{"code":"// .eslintrc.cjs (for CommonJS projects)\nmodule.exports = (async function config() {\n  const { default: love } = await import('eslint-config-love')\n\n  return [\n    {\n      ...love,\n      files: ['**/*.js', '**/*.ts', '**/*.jsx', '**/*.tsx'],\n    },\n  ]\n})()\n\n// tsconfig.json (required for TypeScript rules utilizing type information)\n{\n  \"compilerOptions\": {\n    \"target\": \"ESNext\",\n    \"module\": \"ESNext\",\n    \"lib\": [\"ESNext\"],\n    \"strict\": true,\n    \"esModuleInterop\": true,\n    \"skipLibCheck\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"isolatedModules\": true,\n    // ... other compiler options\n  },\n  \"include\": [\"src/**/*.ts\", \"src/**/*.tsx\", \"src/**/*.js\", \"src/**/*.jsx\"],\n  \"exclude\": [\"node_modules\"]\n}\n","lang":"typescript","description":"This quickstart shows how to configure ESLint in a CommonJS project using dynamic import and provides a basic tsconfig.json necessary for the configuration's type-aware rules."},"warnings":[{"fix":"Always check the release notes and changelog on GitHub for specific migration instructions before upgrading to a new major version.","message":"This package has an extremely aggressive major version release schedule, with new major versions often released weekly or bi-weekly. Each new version frequently introduces breaking changes, typically by enabling new rules or upgrading underlying ESLint plugins. Users should anticipate needing to adjust their code or ESLint configurations with almost every update. Always review the changelog before upgrading.","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Review and refactor promise chains to ensure they always include a `.catch()` or are otherwise handled, and update `eslint-plugin-promise` if managed separately.","message":"Version 153.0.0 introduced breaking changes related to promise handling, specifically enabling `promise/prefer-catch` and updating `eslint-plugin-promise` to `^7.2.0`.","severity":"breaking","affected_versions":">=153.0.0"},{"fix":"Review your TypeScript code for new linting errors related to rules like `@typescript-eslint/strict-void-return`, `@typescript-eslint/no-useless-default-assignment`, or `@typescript-eslint/no-unused-private-class-members` and refactor as necessary or disable specific rules if they do not fit your project's needs.","message":"Multiple recent versions have introduced breaking changes due to significant updates to `@typescript-eslint` plugins, enabling new strict TypeScript-specific rules.","severity":"breaking","affected_versions":">=147.0.0"},{"fix":"Ensure you have a `tsconfig.json` file in your project root or configure `parserOptions.project` in your `.eslintrc` to point to your `tsconfig.json` files.","message":"The configuration explicitly sets `languageOptions.parserOptions.project = true`, meaning ESLint will require a `tsconfig.json` file in your project to correctly parse and lint TypeScript files, especially for type-aware rules. Without it, you will encounter parsing errors.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"last_verified":"2026-04-19T00:00:00.000Z","next_check":"2026-07-18T00:00:00.000Z","problems":[{"fix":"Ensure a valid `tsconfig.json` file exists in your project's root or specified location, and that the `include` glob covers all files ESLint should process.","cause":"The `eslint-config-love` configuration enables type-aware linting rules which require a `tsconfig.json` to be present and correctly configured.","error":"Parsing error: 'parserOptions.project' has been set for 'parser'.\nThe 'project' of 'parserOptions' was set and now 'parser' needs to be configured with 'project'."},{"fix":"Run `npm install --save-dev eslint-config-love` and ensure your ESLint configuration file correctly references `love` in the `extends` array or similar.","cause":"The `eslint-config-love` package is not installed or the `extends` path in `.eslintrc` is incorrect.","error":"ESLint couldn't find the config \"love\"."},{"fix":"For CommonJS configurations, use a dynamic import: `const { default: love } = await import('eslint-config-love')` inside an `async` function for your ESLint config.","cause":"You are attempting to use `require()` for `eslint-config-love` in a CommonJS context, but the package is ESM-first.","error":"TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension \".cjs\" for <path-to-eslint-config-love>/index.js"},{"fix":"Install the required peer dependencies: `npm install --save-dev eslint typescript`.","cause":"Missing peer dependencies. `eslint-config-love` relies on `eslint` and `typescript` as peer dependencies.","error":"ESLint: Cannot find module 'eslint' or 'typescript'."}],"ecosystem":"npm"}