{"id":14978352,"url":"https://github.com/andreogle/eslint-formatter-teamcity","last_synced_at":"2026-02-07T20:02:14.727Z","repository":{"id":39306750,"uuid":"467835840","full_name":"andreogle/eslint-formatter-teamcity","owner":"andreogle","description":"An ESLint formatter plugin designed for TeamCity","archived":false,"fork":false,"pushed_at":"2026-02-01T15:03:56.000Z","size":1677,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-02T00:27:07.634Z","etag":null,"topics":["continuous-integration","eslint","formatter-plugin","javascript","lint","linting","nodejs","teamcity"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/andreogle.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2022-03-09T08:15:32.000Z","updated_at":"2026-02-01T15:03:58.000Z","dependencies_parsed_at":"2023-02-17T18:01:29.107Z","dependency_job_id":"2fa0a3a5-91bb-427d-8b80-e5a3b2a9a11a","html_url":"https://github.com/andreogle/eslint-formatter-teamcity","commit_stats":{"total_commits":86,"total_committers":3,"mean_commits":"28.666666666666668","dds":"0.18604651162790697","last_synced_commit":"e949b1160643d825dcf913c67e4319a7710d143c"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/andreogle/eslint-formatter-teamcity","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreogle%2Feslint-formatter-teamcity","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreogle%2Feslint-formatter-teamcity/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreogle%2Feslint-formatter-teamcity/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreogle%2Feslint-formatter-teamcity/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andreogle","download_url":"https://codeload.github.com/andreogle/eslint-formatter-teamcity/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreogle%2Feslint-formatter-teamcity/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29206821,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-07T17:44:10.191Z","status":"ssl_error","status_checked_at":"2026-02-07T17:44:07.936Z","response_time":63,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["continuous-integration","eslint","formatter-plugin","javascript","lint","linting","nodejs","teamcity"],"created_at":"2024-09-24T13:57:27.825Z","updated_at":"2026-02-07T20:02:14.715Z","avatar_url":"https://github.com/andreogle.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# eslint-formatter-teamcity\n\n[![npm version](https://badge.fury.io/js/eslint-formatter-teamcity.svg)](https://www.npmjs.com/package/eslint-formatter-teamcity)\n[![Build Status](https://github.com/andreogle/eslint-formatter-teamcity/actions/workflows/continuous-build.yml/badge.svg)](https://github.com/andreogle/eslint-formatter-teamcity/actions/workflows/continuous-build.yml)\n[![Coverage Status](https://coveralls.io/repos/github/andreogle/eslint-formatter-teamcity/badge.svg?branch=main)](https://coveralls.io/github/andreogle/eslint-formatter-teamcity?branch=main)\n[![npm downloads](https://img.shields.io/npm/dm/eslint-formatter-teamcity.svg)](https://www.npmjs.com/package/eslint-formatter-teamcity)\n\n\u003e A small [ESLint](https://github.com/eslint/eslint) formatter plugin.\nESLint violations are output nicely in the\n[TeamCity](https://www.jetbrains.com/teamcity/) build error format. Tested with\nTeamCity 9.1.x/10.0.x/2017+ and ESLint 1+\n\n## Installation\n\n```sh\nnpm install eslint-formatter-teamcity --save-dev\n```\n\n## Usage\n\nThere are 3 ways to use eslint-formatter-teamcity:\n\n### 1. As a regular ESLint formatter plugin:\n\n```sh\neslint --format teamcity myfiletolint.js\n```\n\n### 2. Running against a generated ESLint JSON report:\n\nGenerate an ESLint JSON report:\n\n```sh\neslint -f json -o result.json app/myjavascriptdirectory\n```\n\nRun eslint-formatter-teamcity against your new report:\n\n```sh\nnode ./node_modules/eslint-formatter-teamcity/index.js result.json\n```\n\n### 3. Importing and running directly from inside your JavaScript code:\n\n```javascript\n// ESM\nimport eslintTeamcity from 'eslint-formatter-teamcity';\n\n// CommonJS\nconst eslintTeamcity = require('eslint-formatter-teamcity');\n\nconsole.log(eslintTeamcity(eslintOutput));\n```\n\n## Configuration\n\nThere are two different formatters you can use to report with. They have no material\nimpact on the output - they're just different ways of viewing the same data. The \"Code Inspection\" tab will only\nappear if you have configured eslint-formatter-teamcity to use the inspections reporter.\n\nErrors (default)             |  Inspections\n:-------------------------:|:-------------------------:\n![Example Errors Report](https://i.imgur.com/3AzQeMy.png)  |  ![Example Inspections Report](https://i.imgur.com/JXzBuaV.png)\n\nThere are several ways that you can configure eslint-formatter-teamcity. **You don't have to configure anything by default**, you just have the option to if you would like.\nSettings are looked for in the following priority:\n\n### 1. As a second argument\n\nIf you run eslint-formatter-teamcity by importing it in JavaScript, you can pass a second argument to the function:\n\n```js\nimport eslintTeamcity from 'eslint-formatter-teamcity';\n\nconst options = {\n  reporter: 'inspections', // default: 'errors'\n  reportName: 'My ESLint Violations', // default: 'ESLint Violations'\n  errorStatisticsName: 'My ESLint Error Count', // default: 'ESLint Error Count'\n  warningStatisticsName: 'My ESLint Warning Count', // default: 'ESLint Warning Count'\n};\nconsole.log(eslintTeamcity(eslintOutput, options));\n```\n\n### 2. From your package.json\n\nIf you have a package.json file in the **current directory**, you can add an extra \"eslint-formatter-teamcity\" property to it:\n\n```json\n...,\n\"eslint-formatter-teamcity\": {\n  \"reporter\": \"inspections\",\n  \"report-name\": \"My ESLint Violations\",\n  \"error-statistics-name\": \"My ESLint Error Count\",\n  \"warning-statistics-name\": \"My ESLint Warning Count\"\n},\n...\n```\n\n### 3. ENV variables\n\n```sh\nexport ESLINT_TEAMCITY_REPORTER=inspections\nexport ESLINT_TEAMCITY_REPORT_NAME=\"My Formatting Problems\"\nexport ESLINT_TEAMCITY_ERROR_STATISTICS_NAME=\"My Error Count\"\nexport ESLINT_TEAMCITY_WARNING_STATISTICS_NAME=\"My Warning Count\"\n```\n\nYou can also output your current settings to the log if you set:\n\n```sh\nexport ESLINT_TEAMCITY_DISPLAY_CONFIG=true\n```\n\n## TeamCity Usage\n\nThe simplest way to run eslint-formatter-teamcity is from an npm script in a build step. You could setup a script similar to this:\n\n```json\n\"scripts\": {\n  \"lint:teamcity\": \"eslint ./src --format teamcity\"\n}\n```\n\nKick off a new build (by deploying again) and you should see your build errors - assuming you have any!\n\n## Extras\n\neslint-formatter-teamcity will also output statistic values which you can use in TeamCity to track your progress in resolving errors!\n\nGraphs can be setup from the Build -\u003e Statistics tab.\n![Example Statistics Output](http://i.imgur.com/oHbiuZE.png)\n\n## Development\n\nThe quickest way to get a TeamCity server setup is to use [Docker](https://www.docker.com) and [ngrok](https://ngrok.com/):\n\n1. Run ngrok\n\n```sh\nngrok http 8111\n```\n\n2. Start TeamCity server and an agent\n\n```sh\ndocker run -itd --name teamcity-server  \\\n    -v \u003cpath to data directory\u003e:/data/teamcity_server/datadir \\\n    -v \u003cpath to logs directory\u003e:/opt/teamcity/logs  \\\n    -p 8111:8111 \\\n    jetbrains/teamcity-server\n\ndocker run -itd --name teamcity-agent-1  \\\n    -e SERVER_URL=\"http://\u003cngrok id\u003e.ngrok.io\"  \\\n    -v \u003cpath to agent data\u003e:/data/teamcity_agent/conf  \\\n    jetbrains/teamcity-agent\n```\n\nNOTE: You can't use `localhost` in SERVER_URL as it will refer to the container.\n\nIf you fork the repo and are testing on your local TeamCity instance, it may help to run `rm -rf node_modules` in a\nbuild step as TeamCity seems to cache versions between commits.\n\n## Issues\n\nI will try keep this project up to date, but please log any issues\n[here](https://github.com/andreogle/eslint-formatter-teamcity/issues).\nAny pull requests are also welcome!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandreogle%2Feslint-formatter-teamcity","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandreogle%2Feslint-formatter-teamcity","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandreogle%2Feslint-formatter-teamcity/lists"}