{"id":38613904,"url":"https://github.com/cabify/eslint-config","last_synced_at":"2026-01-17T08:48:09.552Z","repository":{"id":36964020,"uuid":"419272289","full_name":"cabify/eslint-config","owner":"cabify","description":"ESLint config for Cabify Javascript projects [managed by soy-programador]","archived":false,"fork":false,"pushed_at":"2026-01-15T14:50:59.000Z","size":5384,"stargazers_count":2,"open_issues_count":3,"forks_count":0,"subscribers_count":14,"default_branch":"main","last_synced_at":"2026-01-15T18:25:24.303Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cabify.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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":null,"dco":null,"cla":null}},"created_at":"2021-10-20T09:50:02.000Z","updated_at":"2026-01-15T14:49:49.000Z","dependencies_parsed_at":"2023-09-23T12:50:15.982Z","dependency_job_id":"a77cdc8d-f7f2-411b-b46d-d067d9c00259","html_url":"https://github.com/cabify/eslint-config","commit_stats":{"total_commits":316,"total_committers":8,"mean_commits":39.5,"dds":"0.27531645569620256","last_synced_commit":"efe50f9ec1e35f1b8b548def00f78016828b875e"},"previous_names":[],"tags_count":64,"template":false,"template_full_name":null,"purl":"pkg:github/cabify/eslint-config","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cabify%2Feslint-config","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cabify%2Feslint-config/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cabify%2Feslint-config/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cabify%2Feslint-config/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cabify","download_url":"https://codeload.github.com/cabify/eslint-config/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cabify%2Feslint-config/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28504499,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T06:57:29.758Z","status":"ssl_error","status_checked_at":"2026-01-17T06:56:03.931Z","response_time":85,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2026-01-17T08:48:09.044Z","updated_at":"2026-01-17T08:48:09.546Z","avatar_url":"https://github.com/cabify.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# @cabify/eslint-config\n\n![npm (scoped)](https://img.shields.io/npm/v/@cabify/eslint-config)\n\n\u003c!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --\u003e\n\n[![All Contributors](https://img.shields.io/badge/all_contributors-20-orange.svg?style=flat-square)](#contributors-)\n\n\u003c!-- ALL-CONTRIBUTORS-BADGE:END --\u003e\n\nESLint config for both TS and JS, Cabify way.\n\n## Installation\n\n```sh\nnpm i -D @cabify/eslint-config eslint prettier\n```\n\nor\n\n```sh\nyarn add --dev @cabify/eslint-config eslint prettier\n```\n\n## Usage\n\n1. Create a `.eslint.config.js` file at the root of your project:\n\n```js\nimport recommended from '@cabify/eslint-config';\n/* Define an object for local configuration. \n/ You can add your custom configuration and override existing rules here before exporting it.\nconst localConfig = {};\nexport default [...recommended, localConfig];\n*/\nexport default [...recommended];\n```\n\n2. Add the lint task into your `package.json`:\n\n```json\n...\n\"scripts\": {\n  ...\n  \"lint:fix\": \"eslint ./ --fix\",\n  \"lint\": \"eslint ./\",\n  ...\n}\n```\n\n3. Add a `.globalIgnores` in your `eslint.config.js` to avoid checking unwanted files:\n\n```js\n// https://eslint.org/docs/latest/use/configure/configuration-files#globally-ignoring-files-with-ignores\nconst globalIgnores = {\n  ignores: [\n    'dist',\n    'node_modules/*',\n    'storybook-static/*',\n    'test/*',\n    'build',\n    'scripts',\n    'webpack',\n  ],\n};\nexport default [...recommended, globalIgnores];\n```\n\n### Formatting\n\nThe recomended configuration does not include formatting rules, as using the Prettier binary is quicker and brings more benefits.\nTo format the files from your app a and checking them are properly formatted you can add the following scripts to your `package.json` file:\n\n```json\n...\n\"scripts\": {\n  ...\n  \"format\": \"prettier --write .\",\n  \"format:check\": \"prettier --check .\",\n  ...\n}\n```\n\n### Setup for TypeScript\n\n```js\nconst localConfigs = {\n  languageOptions: {\n    parserOptions: {\n      project: './tsconfig.json',\n      ecmaVersion: 2020,\n    },\n  },\n  settings: {\n    'import/resolver': {\n      typescript: {\n        alwaysTryTypes: true, // always try to resolve types under `\u003croot\u003e@types` directory even it doesn't contain any source code, like `@types/unist`\n        project: '\u003croot\u003e/tsconfig.json',\n      },\n    },\n  },\n};\n\nexport default [...recommended, localConfigs];\n```\n\n3.  Add a `./tsconfig.eslint.json` to the root of your project.\n    NOTE: it is important that your `tsconfig.eslint.json` file includes\n    the same files that you are going to lint, or it will fail and make linting so slow.\n\n```json\n{\n  \"extends\": \"./tsconfig.json\",\n  \"include\": [\"src/**/*\", \"test/**/*\"] // remember to import also your test files if you want to lint them\n}\n```\n\n#### A note on performance in TS projects\n\nThere is an known issue that may affect linting times in projects with TS. If you note that your\nlinting time is not acceptable, there is a workaround to improve it a lot, but it implies to disable\nsome rules. If you can live without them, just make these changes in your `.eslintrc` config:\n\n```json\n{\n  ...\n  // remove the \"project\" field (if you don't have any other parserOptions you can remove the full section)\n  \"parserOptions\": {},\n  \"rules\": {\n    // this rules depend on project field, so they must be disabled to make linting much faster\n    \"@typescript-eslint/await-thenable\": \"off\",\n    \"@typescript-eslint/no-misused-promises\": \"off\",\n    \"@typescript-eslint/no-unnecessary-type-assertion\": \"off\",\n    \"@typescript-eslint/prefer-includes\": \"off\",\n    \"@typescript-eslint/prefer-regexp-exec\": \"off\",\n    \"@typescript-eslint/prefer-string-starts-ends-with\": \"off\",\n    \"@typescript-eslint/require-await\": \"off\",\n    \"@typescript-eslint/unbound-method\": \"off\"\n  }\n}\n```\n\n### Publish a new version\n\n- Update [CHANGELOG](./CHANGELOG.md) with new features, breaking changes, etc\n- Check you're in `main` branch and everything is up-to-date.\n- Run `yarn publish:\u003cmajor|minor|patch\u003e` or `yarn publish:canary` for canary versions.\n- Run `git push \u0026\u0026 git push --tags`\n- Check all test actions triggered after previous push are ✔️.\n- Go to [create a new release](https://github.com/cabify/eslint-config/releases/new), select previously pushed tag and write a Title.\n- Check the action for publish the npm has finished with success.\n- [Check on npm package webpage](https://www.npmjs.com/package/@cabify/eslint-config), the version has been published successfully under `latest` tag.\n\nThis will trigger a workflow on Github which will publish to npm eventually.\n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://aarongarciah.com/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/7225802?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAarón García Hervás\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/cabify/eslint-config/commits?author=aarongarciah\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/alejandrofdiaz\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/9197247?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAlejandro\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/cabify/eslint-config/commits?author=alejandrofdiaz\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/alexgallardo\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/7766614?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAlejandro Gallardo Escobar\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/cabify/eslint-config/commits?author=alexgallardo\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/cicloon\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/818328?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAlejandro León\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/cabify/eslint-config/commits?author=cicloon\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/AlexTemina\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/14157093?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAlex Temina\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/cabify/eslint-config/commits?author=AlexTemina\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://www.ari.soy/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/29388744?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eArian Zargaran\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/cabify/eslint-config/commits?author=ArianZargaran\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/carloscasalar\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/6154549?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eCarlos Castillo\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/cabify/eslint-config/commits?author=carloscasalar\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/christiandebarrio\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/13832650?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eChristian\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/cabify/eslint-config/commits?author=christiandebarrio\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/Crismmgg\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/56558107?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eCrismmgg\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/cabify/eslint-config/commits?author=Crismmgg\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/d-asensio\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/13970905?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDavid Asensio Cañas\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/cabify/eslint-config/commits?author=d-asensio\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/inspiratweb\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/6814061?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eFrancisco Sánchez\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/cabify/eslint-config/commits?author=inspiratweb\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/jalopez\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/259623?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJavier López\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/cabify/eslint-config/commits?author=jalopez\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/jmmerino\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1152640?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJesús Merino Parra\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/cabify/eslint-config/commits?author=jmmerino\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://leireriel.github.io/leire-rico-portfolio/#/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/48056077?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eLeire Rico\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/cabify/eslint-config/commits?author=leireriel\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/riboher\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/11684090?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRicardo Boluda\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/cabify/eslint-config/commits?author=riboher\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://www.siete3.com/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/2030605?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRodrigo\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/cabify/eslint-config/commits?author=area73\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/humanrender\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/161557?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSergio Ramirez\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/cabify/eslint-config/commits?author=humanrender\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://valya.codes/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/7880641?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eValentin Berlin\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/cabify/eslint-config/commits?author=valenber\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/YagoQuinoy\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/2685554?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eYago Quiñoy Lobariñas\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/cabify/eslint-config/commits?author=YagoQuinoy\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/alejandromolero\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/5390467?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ealejandromolero\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/cabify/eslint-config/commits?author=alejandromolero\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcabify%2Feslint-config","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcabify%2Feslint-config","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcabify%2Feslint-config/lists"}