{"id":19252756,"url":"https://github.com/morevm/eslint-config","last_synced_at":"2026-06-28T22:00:49.948Z","repository":{"id":37035045,"uuid":"451537611","full_name":"MorevM/eslint-config","owner":"MorevM","description":"Strict shareable ESLint configuration","archived":false,"fork":false,"pushed_at":"2026-06-28T15:35:59.000Z","size":7774,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-06-28T17:17:26.835Z","etag":null,"topics":["config","eslint","lint","linter","linting"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MorevM.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2022-01-24T16:15:23.000Z","updated_at":"2026-06-28T15:36:03.000Z","dependencies_parsed_at":"2022-06-29T10:37:57.622Z","dependency_job_id":"8a55b153-5e0c-4543-a894-9ed05966a386","html_url":"https://github.com/MorevM/eslint-config","commit_stats":{"total_commits":1470,"total_committers":4,"mean_commits":367.5,"dds":"0.49183673469387756","last_synced_commit":"d70c690c9c2a900591b3a3024207d5ecb4c873da"},"previous_names":[],"tags_count":178,"template":false,"template_full_name":null,"purl":"pkg:github/MorevM/eslint-config","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MorevM%2Feslint-config","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MorevM%2Feslint-config/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MorevM%2Feslint-config/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MorevM%2Feslint-config/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MorevM","download_url":"https://codeload.github.com/MorevM/eslint-config/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MorevM%2Feslint-config/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34905180,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-28T02:00:05.809Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["config","eslint","lint","linter","linting"],"created_at":"2024-11-09T18:28:18.561Z","updated_at":"2026-06-28T22:00:49.937Z","avatar_url":"https://github.com/MorevM.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\n  eslint-disable markdown-preferences/indent -- https://github.com/ota-meshi/eslint-plugin-markdown-preferences/issues/254\n--\u003e\n\n![Promo image of @morev/eslint-config package](./.github/images/banner.svg)\n\n![Stability of \"master\" branch](https://img.shields.io/github/actions/workflow/status/MorevM/eslint-config/build.yaml?branch=master)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n![Last commit](https://img.shields.io/github/last-commit/morevm/eslint-config)\n![Release version](https://img.shields.io/github/v/release/morevm/eslint-config?include_prereleases)\n![GitHub Release Date](https://img.shields.io/github/release-date/morevm/eslint-config)\n![Keywords](https://img.shields.io/github/package-json/keywords/morevm/eslint-config)\n\n# @morev/eslint-config\n\nStrict shareable ESLint configuration with reasonable defaults.\n\n## Table of contents\n\n- [Installation](#installation)\n  - [Automatic installation via CLI](#automatic-installation-via-cli)\n  - [Manual installation](#manual-installation)\n    - [Adding the required packages](#adding-the-required-packages)\n    - [Creating the configuration file](#creating-the-configuration-file)\n    - [Creating `npm scripts` for linting](#creating-npm-scripts-for-linting)\n    - [Configuring VSCode](#configuring-vscode)\n      - [Disabling `prettier`](#disabling-prettier)\n      - [Enabling autofix on save](#enabling-autofix-on-save)\n      - [Enabling ESLint to work with any file format](#enabling-eslint-to-work-with-any-supported-file-format)\n      - [Suppressing stylistic errors noise](#suppressing-stylistic-errors-noise)\n- [Package contents][package-contents]\n  - [`combine` utility function](#combine-utility-function)\n  - [`defineIgnores` utility function][define-ignores]\n  - [`defineConfiguration` function][define-configuration]\n  - [Extra useful exports](#extra-useful-exports)\n\n## Installation\n\nYou have two options:\n\n- Automatic installation/configuration via CLI using the installation wizard *(recommended)*;\n- Manual installation and configuration.\n\nBoth options are described below.\n\n### Automatic installation via CLI\n\nJust run the package binary using your favorite package manager:\n\n```sh\n# Using `npm`\nnpx @morev/eslint-config@latest\n\n# Using `yarn`\nyarn dlx @morev/eslint-config@latest\n\n# Using `pnpm`\npnpm dlx @morev/eslint-config@latest\n\n# Using `bun`\nbunx @morev/eslint-config@latest\n```\n\nThen follow the installer instructions.\n\n\u003e [!IMPORTANT]\n\u003e For your first installation, it is recommended to check all the boxes on the first step -\n\u003e at each substep you will see messages explaining what will be done (and why),\n\u003e and be asked whether or not to continue. \\\n\u003e It's safe - every potentially dangerous move will require explicit confirmation.\n\n\u003e [!NOTE]\n\u003e You can run the wizard anytime, even after manual installation or partial setup - just run the command above.\n\n---\n\n### Manual installation\n\n\u003e [!TIP]\n\u003e This section also explains everything that happens during automatic installation when using the CLI. \\\n\u003e The setup wizard is simply a way to automate all of these steps.\n\n#### Adding the required packages\n\nAdd the `eslint` and `@morev/eslint-config` packages as `devDependencies` using your favorite package manager:\n\n```sh\n# Using `npm`\nnpm install -D eslint @morev/eslint-config\n\n# Using `yarn`\nyarn add eslint @morev/eslint-config --dev\n\n# Using `pnpm`\npnpm add -D eslint @morev/eslint-config\n\n# Using `bun`\nbun install -D eslint @morev/eslint-config\n```\n\n\u003e [!TIP]\n\u003e You will also need the `typescript` package installed if you are using the `typescript` configuration.\n\n\u003e [!CAUTION]\n\u003e Minimum environment requirements:\n\u003e\n\u003e - Node 20 or higher.\n\u003e - `eslint^9.9.1`;\n\u003e - `typescript^5.4.2` (if used);\n\n#### Creating the configuration file\n\nCreate the [`eslint.config.js`][eslint-configuration-files] file\nwith the following content as a starting point:\n\n```js\nimport { combine, defineConfiguration, defineIgnores } from '@morev/eslint-config';\n\nexport default combine([\n  defineIgnores(),\n  defineConfiguration('javascript'),\n  // ...define other configurations, if necessary,\n  // using the `defineConfiguration` function or\n  // using ESLint-compatible format of configuration.\n]);\n\n```\n\nFor more explanations on this part, take a look at [Package contents][package-contents] section.\n\n---\n\n#### Creating `npm scripts` for linting\n\nIt's a good practice to have `npm script`s that will start the linting process. \\\nYou can run them when committing with git hooks or during the validation in CI, etc.\n\nOpen your `package.json` and create these scripts for linting within \"scripts\" section:\n\n```json\n{\n  \"scripts\": {\n    \"lint:eslint\": \"eslint .\",\n    \"lint:eslint:fix\": \"eslint . --fix\",\n  }\n}\n```\n\n\u003e [!NOTE]\n\u003e You don't have to use those exact names - this is just an example,\n\u003e implying that there are other linters (stylelint, ls-lint, etc) as well.\n\n\u003cdetails\u003e\n  \u003csummary\u003e❓ What if I only need to validate files in a certain directory?\u003c/summary\u003e\n\n  ---\n\n  You have two ways: disable ESLint for non-linting files using\n  [`defineIgnores`][define-ignores] (recommended),\n  or call ESLint only for required files in `npm scripts`.\n\n  **Method 1 (recommended): Excluding files**\n\n  It is usually easier to identify files/directories **NOT** intended for linting\n  and disallow their linting at the config level:\n\n  ```ts\n  // 📄 eslint.config.js\n\n  export default combine([\n    defineIgnores({\n      extraIgnoredFiles: [\n        '**/backend/**', // Do not lint the files within `backend` directory\n      ],\n    }),\n  ]);\n  ```\n\n  This allows `eslint` to be called without arguments at the global level\n  and ensures that even IDE extensions will not apply linting rules to these files.\n\n  **Method 2: Run only for necessary files**\n\n  ESLint takes paths for files to be checked as an argument. \\\n  By default it runs for all files, but you can limit this list:\n\n  ```jsonc\n  {\n    // Only run ESLint for files within \"frontend\" and \"open-api\" directories\n    \"lint:eslint\": \"eslint \\\"./{frontend,open-api}/**\\\"\"\n  }\n  ```\n\n  \u003e It is important to use quotes for Windows compatibility.\n\n  Keep in mind that in this case you lose the possibility to call ESLint without arguments (and expect a correct result)\n  also there is nothing to prevent the IDE's extension from automatically\n  making changes to these files once you open and save them.\n\n\u003c/details\u003e\n\n---\n\n#### Configuring VSCode\n\nFor a better user experience, install the [official ESLint extension].\n\nNext, create the `.vscode/settings.json` file in the project root (if not exists). \\\nThis file contains settings that apply only to a specific project, so your other projects will remain in the same state\n(you can read more about its behavior [here](https://code.visualstudio.com/docs/getstarted/settings#_workspace-settings)).\n\nIf the file already exists, you will need to add/replace/merge the necessary keys/values yourself.\n\n\u003e [!TIP]\n\u003e The format of `.vscode/settings.json` file is actually `JSONC` -\n\u003e so you can safely use comments and trailing commas inside.\n\n##### Disabling `prettier`\n\nPrettier is a popular (unfortunately) solution used by many people. \\\nThis config is designed to be used **INSTEAD** of `prettier`, providing mostly the same,\nbut less restrictive and opinionated code formatting options. \\\nAnd, thanks to ESLint's ideals, you can rewrite or even disable individual rules that don't suit you,\nwhile leaving the rest unchanged.\n\nPut these lines in the `.vscode/settings.json` file:\n\n```jsonc\n{\n  // ESLint handles formatting.\n  \"prettier.enable\": false,\n}\n```\n\n##### Enabling autofix on save\n\nOne of the reasons for the popularity of `prettier` is that it works and makes changes immediately. \\\nFortunately, all stylistic rules (and many others!) can automatically fix the code,\nand do so seamlessly when the file is saved.\n\nPut these lines in the `.vscode/settings.json` file to enable this feature:\n\n```jsonc\n{\n  // Turn autofix on.\n  \"editor.codeActionsOnSave\": {\n    \"source.fixAll.eslint\": \"explicit\"\n  },\n}\n```\n\n##### Enabling ESLint to work with any supported file format\n\nBy default, [VSCode ESLint extension][official ESLint extension]\nonly validates JavaScript files, but the config provides a configurations\nto work with JSX, Astro, Vue, YAML, JSON files and so on.\n\nAll available configurations are listed in the [`defineConfiguration`][define-configuration] section.\n\nPut these lines in the `.vscode/settings.json` file\nto enforce the extension to check all files supported by this package:\n\n```jsonc\n{\n  // Enable ESLint for all files that could\n  // potentially be processed by ESLint.\n  \"eslint.validate\": [\n    \"javascript\",\n    \"javascriptreact\",\n    \"typescript\",\n    \"typescriptreact\",\n    \"vue\",\n    \"astro\",\n    \"html\",\n    \"markdown\",\n    \"json\",\n    \"json5\",\n    \"jsonc\",\n    \"yaml\"\n  ],\n}\n```\n\n##### Suppressing stylistic errors noise\n\nSome stylistic rules have an \"error\" severity, but each stylistic error can be automatically fixed when saving.\n\nHowever, do you need constant red underlines while typing the code for a rule that can be fixed automatically? \\\nI believe not. \\\nIt gets even worse if you are using something like\n[Error Lens VSCode extension](https://marketplace.visualstudio.com/items?itemName=usernamehw.errorlens).\n\nFortunately, there is a way to modify the severity of rules for the IDE only,\nleaving the values in the config itself unchanged (e.g., to run via CLI).\n\nPut these lines in the `.vscode/settings.json` file to set the severity of such rules as \"warning\":\n\n```jsonc\n{\n  // Suppress stylistic errors, but still autofix them.\n  \"eslint.rules.customizations\": [\n    { \"rule\": \"@stylistic/*\", \"severity\": \"warn\", \"fixable\": true },\n    { \"rule\": \"*-indent\", \"severity\": \"warn\", \"fixable\": true },\n    { \"rule\": \"*-spacing\", \"severity\": \"warn\", \"fixable\": true },\n    { \"rule\": \"*-spaces\", \"severity\": \"warn\", \"fixable\": true },\n    { \"rule\": \"*-order\", \"severity\": \"warn\", \"fixable\": true },\n    { \"rule\": \"*-dangle\", \"severity\": \"warn\", \"fixable\": true },\n    { \"rule\": \"*-newline\", \"severity\": \"warn\", \"fixable\": true },\n    { \"rule\": \"*quotes\", \"severity\": \"warn\", \"fixable\": true },\n    { \"rule\": \"*semi\", \"severity\": \"warn\", \"fixable\": true }\n  ],\n}\n```\n\n\u003e [!TIP]\n\u003e You can even turn the IDE highlighting off for such rules using `off` instead of `warn`, but I wouldn't recommend it.\n\u003e\n\u003e Using this approach, errors are still highlighted, but not as \"loudly\". \\\n\u003e Thus, every developer can clearly see which codestyle is considered good,\n\u003e but at the same time not overloaded with a lot of \"red underlines\".\n\n---\n\n## Package contents\n\nThe main export of the package provides 3 functions - `combine`, `defineIgnores` and `defineConfiguration`. \\\nAll of these functions are inline-documented using JSDoc with the provided TS types,\nso you'll always have hints right in the editor. \\\nHowever, let's look at them in more detail:\n\n### `combine` utility function\n\nYour [`eslint.config.js`][eslint-configuration-files] file\nshould export the configurations (both imported from this package and, optionally, other parts)\nwrapped with the `combine` utility:\n\n```js\n// ❌ won't work\nexport default [\n  defineIgnores(),\n  defineConfiguration('javascript'),\n  // ...other configuration parts\n];\n\n// ✅ will work\nexport default combine([\n  defineIgnores(),\n  defineConfiguration('javascript'),\n  // ...other configuration parts\n]);\n```\n\nFor future extensibility, many configurations are designed as an array of configuration objects,\nwhereas ESLint expects a flat list of configurations.\n\nAll the `combine` function does is flatten the array:\n\n```js\nexport const combine = (...configurations) =\u003e {\n  return configurations.flat(Infinity);\n};\n```\n\n\u003e [!NOTE]\n\u003e You can safely add other parts of the configuration\n\u003e (not provided by this package) inside the `combine` function as well:\n\u003e\n\u003e ```js\n\u003e import eslintPluginFoo from 'eslint-plugin-foo';\n\u003e\n\u003e export default combine([\n\u003e   defineIgnores(),\n\u003e   defineConfiguration('javascript'),\n\u003e   {\n\u003e     plugins: {\n\u003e       foo: eslintPluginFoo,\n\u003e     },\n\u003e     rules: {\n\u003e       'foo/rule': 'warn',\n\u003e     },\n\u003e   },\n\u003e ]);\n\u003e\n\u003e ```\n\n---\n\n### `defineIgnores` utility function\n\n`defineIgnores` function does not provide any rules, but configures files that should **not** be processed by ESLint. \\\nIt automatically reads the root `.gitignore` file to inherit ignored paths,\nand adds some known non-linting files to reduce the config verbosity.\n\n\u003e [!TIP]\n\u003e You can see these extra patterns for ignoring in the source code (the `GLOB_EXCLUDE` constant) [here].\n\nUnder the hood, it uses [`eslint-config-flat-gitignore`][eslint-config-flat-gitignore] package.\n\n\u003e [!IMPORTANT]\n\u003e The function only considers the root `.gitignore`. \\\n\u003e If the project has child directories containing its own `.gitignore`,\n\u003e they will not be read and must be added manually using the `extraIgnoredFiles` or `gitignoreFiles` setting.\n\n\u003cdetails\u003e\n  \u003csummary\u003e❓ How to add custom files to the ignore list?\u003c/summary\u003e\n\n  ---\n\n  Just pass a [minimatch](https://github.com/isaacs/minimatch)-compatible array of strings\n  as `extraIgnoredFiles` argument.\n\n  \u003e You can use \u003chttps://globster.xyz/\u003e website to check such strings.\n\n  Some examples:\n\n  ```ts\n  // 📄 eslint.config.js\n\n  export default combine([\n    defineIgnores({\n      extraIgnoredFiles: [\n        'foo.txt',        // Single file (relative to the root directory)\n        'foo/**',         // All files inside the directory\n        '**/bar/**',      // All files inside any directory named \"bar\"\n        '**/baz/**/*.js', // Only JS files within any directory named \"baz\"\n      ],\n    }),\n  ]);\n  ```\n\n  ---\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e❓ How to account for other `.gitignore` files? Or if my `.gitignore` is not in the root?\u003c/summary\u003e\n\n  ---\n\n  Simply pass the paths to the required files as the `gitignoreFiles` argument.\n\n  **❗IMPORTANT❗** \\\n  If you use this option, you MUST include the root `.gitignore` in the array as well.\n\n  ```ts\n  // 📄 eslint.config.js\n\n  export default combine([\n    defineIgnores({\n      gitignoreFiles: [\n        '.gitignore', // The root `.gitignore` MUST be in the list if you are using `gitignoreFiles` option\n        './src/assets/svg-sprites/_dist/.gitignore', // Additional `.gitignore` file to consider\n      ],\n    }),\n  ]);\n  ```\n\n  `gitignoreFiles` value is passed to the [`eslint-config-flat-gitignore`][eslint-config-flat-gitignore]\n  as the `files` argument without any changes.\n\n\u003c/details\u003e\n\n---\n\n### `defineConfiguration` function\n\nThis is the main function that enables ESLint rules for the selected environment.\n\n**To enable a configuration**, pass its name as the first argument and (optionally) options as the second argument. \\\nThe configurations are designed to work in most scenarios even without specifying options,\nbut if you need more detailed customization - you can do that:\n\n```js\n// 🗎 eslint.config.js\n\nexport default combine([\n  defineIgnores(),\n  defineConfiguration('vue', {\n    version: 2,\n    typescript: true,\n  }),\n]);\n```\n\n\u003e [!NOTE]\n\u003e All configurations have options that are documented inline with TypeScript and JSDoc -\n\u003e so you'll have a short documentation right in the editor.\n\nEach configuration has at least two options, `files` and `ignores`, which work just like these options in ESLint. \\\nAll configurations are set up by default so that `files` corresponds to the appropriate files -\nso the \"vue\" configuration has a preset `[\"**/*.vue\"]`, and so on.\n\nLet's take a more detailed look:\n\n#### The configurations list\n\n- 🗂️ `javascript` - the base ESLint configuration with plugins related to `js` files.\n\n  \u003cdetails\u003e\n    \u003csummary\u003eShow the details\u003c/summary\u003e\n\n    ---\n\n    The most basic and largest configuration is it's universal rules for JS code. \\\n    It is assumed that it **will always be enabled**.\n\n    There's no fine-grain control here - it just includes rules that are universal to any JS code in any environment.\n\n    ---\n\n  \u003c/details\u003e\n\n- 📁 `browser` - additional JS rules related only to code that executes in the browser.\n\n  \u003cdetails\u003e\n    \u003csummary\u003eShow the details\u003c/summary\u003e\n\n    ---\n\n    This configuration provides rules specific to the DOM API and also\n    declares global variables that are only available in the browser context.\n\n    By default, rules are enabled for all files (since there is no way to universally and unambiguously determine\n    whether a file belongs to a browser context).\n\n    If your project structure identifies files that refer **only** to the browser,\n    it is recommended to set `files` explicitly (so that, for example,\n    you get errors when you try to use `window` inside a server file).\n\n    ```js\n    export default combine([\n      defineConfiguration('browser', {\n        files: ['./src/client/**'],\n      }),\n    ]);\n    ```\n\n    ---\n\n  \u003c/details\u003e\n\n- 📁 `node` - set of the rules for the code that use [Node.js](https://nodejs.org/) APIs.\n\n  \u003cdetails\u003e\n    \u003csummary\u003eShow the details\u003c/summary\u003e\n\n    ---\n\n    This configuration provides rules specific to Node.js code and also\n    declares global variables that are only available in the Node context.\n\n    By default, rules are enabled for all files (since there is no way to universally and unambiguously determine\n    whether a file belongs to a Node context).\n\n    If your project structure identifies files that refer **only** to the Node,\n    it is recommended to set `files` explicitly (so that, for example,\n    you get errors when you try to use `process` inside a browser-related file).\n\n    ```js\n    export default combine([\n      defineConfiguration('node', {\n        files: ['./src/server/**'],\n      }),\n    ]);\n    ```\n\n    ---\n\n  \u003c/details\u003e\n\n- 📁 `typescript` - for projects that use [Typescript](https://www.typescriptlang.org/).\n\n  \u003cdetails\u003e\n    \u003csummary\u003eShow the details\u003c/summary\u003e\n\n    ---\n\n    This configuration provides rules specific to TypeScript and enables the TypeScript parser for TS(X) files.\n\n    Just one important detail here - if you use TypeScript inside files that have\n    a different extension (like `.vue` or `.astro`) - don't forget to specify\n    those extensions as the `extraFileExtensions` option.\n\n    Example of ESLint config for Vue 3 with TypeScript:\n\n    ```js\n    export default combine([\n      defineConfiguration('vue', {\n        version: 3,\n        typescript: true,\n      }),\n      defineConfiguration('typescript', {\n        extraFileExtensions: ['vue'],\n      }),\n    ]);\n    ```\n\n    ---\n\n  \u003c/details\u003e\n\n- 📁 `jsx` - for projects that use JSX/TSX.\n\n  \u003cdetails\u003e\n    \u003csummary\u003eShow the details\u003c/summary\u003e\n\n    ---\n\n    This configuration enables JSX a11y rules for JSX/TSX files\n    as well as stylistic rules that belongs to JSX syntax.\n\n    ```js\n    export default combine([\n      defineConfiguration('jsx'),\n    ]);\n    ```\n\n    ---\n\n  \u003c/details\u003e\n\n- 📁 `vue` - for projects that use [VueJS](https://vuejs.org/) (both `2` and `3`).\n\n  \u003cdetails\u003e\n    \u003csummary\u003eShow the details\u003c/summary\u003e\n\n    ---\n\n    This configuration provides rules specific to Vue, enables the Vue parser for these files.\n\n    The configuration can work with Vue2 and Vue3 both.\n\n    By default, it tries to determine the Vue version in use,\n    but you can set the version explicitly with `version` option. \\\n    If the version could not be determined, Vue3 rules are applied.\n\n    By default, it enables TypeScript parser for Vue files. \\\n    If you don't use TypeScript, disable this behavior explicitly with the `typescript: false` option.\n\n    \u003e If you are using TypeScript, do not forget to put `extraFileExtensions: ['vue']` setting\n    \u003e in the `typescript` configuration options.\n\n    Example of explicit setup for Vue 3 with TypeScript enabled:\n\n    ```js\n    export default combine([\n      defineConfiguration('vue', {\n        version: 3,\n        typescript: true,\n      }),\n      defineConfiguration('typescript', {\n        extraFileExtensions: ['vue'],\n      }),\n    ]);\n    ```\n\n    ---\n\n  \u003c/details\u003e\n\n- 📁 `astro` - for projects that use [Astro](https://astro.build/) framework.\n\n  \u003cdetails\u003e\n    \u003csummary\u003eShow the details\u003c/summary\u003e\n\n    ---\n\n    This configuration provides rules specific to Astro and enables the Astro parser for these files.\n    It uses TypeScript parser under the hood which also works with pure JS.\n\n    \u003e If you are using TypeScript, do not forget to put `extraFileExtensions: ['vue']` setting\n    \u003e in the `typescript` configuration options.\n\n    Example of explicit setup for Astro with TypeScript:\n\n    ```js\n    export default combine([\n      defineConfiguration('astro'),\n      defineConfiguration('typescript', {\n        extraFileExtensions: ['astro'],\n      }),\n    ]);\n    ```\n\n    ---\n\n  \u003c/details\u003e\n\n- 📁 `vitest` - for projects that use [Vitest](https://vitest.dev/) as a test platform.\n\n  \u003cdetails\u003e\n    \u003csummary\u003eShow the details\u003c/summary\u003e\n\n    ---\n\n    This configuration enables Vitest-specific rules.\n\n    By default, the rules apply to popular test file names, which in turn are driven by the tool's defaults. \\\n    By default, the configuration ignores Cypress default test filename pattern.\n\n    \u003e You can see these globs in the source code [here] (`GLOB_TESTS` and `GLOB_CYPRESS` constants).\n\n    It also declares `vitest` testing functions as\n    [ESLint globals](https://eslint.org/docs/latest/use/configure/language-options#using-configuration-files) by default. \\\n    You can turn this behavior off by using `globals: false` option.\n\n    If you have non-standard test file name pattern or a custom ignores,\n    then specify files and exceptions explicitly using the `files` and `ignores` options.\n\n    Example of `vitest` configuration in use:\n\n    ```js\n    export default combine([\n      defineConfiguration('vitest'),\n    ]);\n    ```\n\n    ---\n\n  \u003c/details\u003e\n\n- 📁 `jest` - for projects that use [Jest](https://jestjs.io/) as a test platform.\n\n  \u003cdetails\u003e\n    \u003csummary\u003eShow the details\u003c/summary\u003e\n\n    ---\n\n    This configuration enables Jest-specific rules.\n\n    By default, the rules apply to popular test file names, which in turn are driven by the tool's defaults.\n    By default, the configuration ignores Cypress default test filename pattern.\n\n    \u003e You can see these globs in the source code [here] (`GLOB_TESTS` and `GLOB_CYPRESS` constants).\n\n    If you have non-standard test file name pattern or a custom ignores,\n    then specify files and exceptions explicitly using the `files` and `ignores` options.\n\n    Example of `jest` configuration in use:\n\n    ```js\n    export default combine([\n      defineConfiguration('jest'),\n    ]);\n    ```\n\n    ---\n\n  \u003c/details\u003e\n\n- 📁 `cypress` - for projects that use [Cypress](https://www.cypress.io/) as a test platform.\n\n  \u003cdetails\u003e\n    \u003csummary\u003eShow the details\u003c/summary\u003e\n\n    ---\n\n    This configuration enables Cypress-specific rules.\n\n    By default, the rules apply to the test file names that Cypress uses by default.\n\n    \u003e You can see these globs in the source code [here] (`GLOB_CYPRESS` constant).\n\n    If you have non-standard test file name pattern, then specify files explicitly using the `files` option.\n\n    Example of `cypress` configuration in use:\n\n    ```js\n    export default combine([\n      defineConfiguration('cypress'),\n    ]);\n    ```\n\n    ---\n\n  \u003c/details\u003e\n\n- 📁 `playwright` - for projects that use [Playwright](https://playwright.dev/) as a test platform.\n\n  \u003cdetails\u003e\n    \u003csummary\u003eShow the details\u003c/summary\u003e\n\n    ---\n\n    This configuration enables Playwright-specific rules.\n\n    By default, the rules apply to the test file names under `e2e`, `tests` or `playwright` directories.\n\n    \u003e You can see these globs in the source code [here] (`GLOB_PLAYWRIGHT` constant).\n\n    If you have non-standard test file name pattern, then specify files explicitly using the `files` option.\n\n    Example of `playwright` configuration in use:\n\n    ```js\n    export default combine([\n      defineConfiguration('playwright'),\n    ]);\n    ```\n\n    ---\n\n  \u003c/details\u003e\n\n- 📁 `json` - for projects that use JSON, JSON5 and JSONC files.\n\n  \u003cdetails\u003e\n    \u003csummary\u003eShow the details\u003c/summary\u003e\n\n    ---\n\n    This configuration enables rules that are specific to JSON(5|C) files,\n    and also provides universal sorting of `package.json`.\n\n    \u003e You can see what exactly the rules apply to [here](./src/configurations/json/index.ts).\n\n    Example of `json` configuration in use:\n\n    ```js\n    export default combine([\n      defineConfiguration('json'),\n    ]);\n    ```\n\n    ---\n\n  \u003c/details\u003e\n\n- 📁 `markdown` - for projects that use [Markdown](https://en.wikipedia.org/wiki/Markdown) files.\n\n  \u003cdetails\u003e\n    \u003csummary\u003eShow the details\u003c/summary\u003e\n\n    ---\n\n    This configuration attaches [`markdownlint`](https://github.com/DavidAnson/markdownlint)\n    as a linter and formatter for `.md` files, using an adapter\n    as the [`eslint-plugin-markdownlint`](https://gitlab.com/pawelbbdrozd/eslint-plugin-markdownlint/) package.\n\n    Example of `markdown` configuration in use:\n\n    ```js\n    export default combine([\n      defineConfiguration('markdown'),\n    ]);\n    ```\n\n    ---\n\n  \u003c/details\u003e\n\n- 📁 `html` - for projects that use pure HTML files.\n\n  \u003cdetails\u003e\n    \u003csummary\u003eShow the details\u003c/summary\u003e\n\n    ---\n\n    This configuration enables HTML-specific rules and also includes formatting rules.\n\n    Example of `html` configuration in use:\n\n    ```js\n    export default combine([\n      defineConfiguration('html'),\n    ]);\n    ```\n\n    ---\n\n  \u003c/details\u003e\n\n- 📁 `yaml` - for projects that use [YAML files](https://en.wikipedia.org/wiki/YAML).\n\n  \u003cdetails\u003e\n    \u003csummary\u003eShow the details\u003c/summary\u003e\n\n    ---\n\n    This configuration enables YAML-specific rules and also includes formatting rules.\n\n    Example of `yaml` configuration in use:\n\n    ```js\n    export default combine([\n      defineConfiguration('yaml'),\n    ]);\n    ```\n\n    ---\n\n  \u003c/details\u003e\n\n### Extra useful exports\n\nIf for some reason you need to access the plugins or parsers used within the package,\nyou can use the `/parsers` and `/plugins` exports:\n\n```ts\nimport { parserTypescript } from '@morev/eslint-config/parsers';\nimport { pluginTypescript } from '@morev/eslint-config/plugins';\n```\n\nIf you need to access the globs used within the package, you can use `/globs` export:\n\n```ts\nimport { GLOB_TSX } from '@morev/eslint-config/globs';\n```\n\n---\n\n[define-configuration]: #defineconfiguration-function\n[define-ignores]: #defineignores-utility-function\n[eslint-config-flat-gitignore]: https://github.com/antfu/eslint-config-flat-gitignore\n[eslint-configuration-files]: https://eslint.org/docs/latest/use/configure/configuration-files\n[here]: ./src/globs.ts\n[official ESLint extension]: https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint\n[package-contents]: #package-contents\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmorevm%2Feslint-config","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmorevm%2Feslint-config","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmorevm%2Feslint-config/lists"}