{"_id":"eslint-formatter-teamcity","_rev":"4-22ded61e80417eb68aa06ec77a647878","name":"eslint-formatter-teamcity","dist-tags":{"latest":"2.0.1"},"versions":{"1.0.0":{"name":"eslint-formatter-teamcity","version":"1.0.0","keywords":["eslint","teamcity","formatter","linting"],"author":{"url":"https://github.com/andreogle","name":"Andre Ogle","email":"ogleandre@gmail.com"},"license":"MIT","_id":"eslint-formatter-teamcity@1.0.0","maintainers":[{"name":"andreogle","email":"ogleandre@gmail.com"}],"homepage":"https://github.com/andreogle/eslint-formatter-teamcity#readme","bugs":{"url":"https://github.com/andreogle/eslint-formatter-teamcity/issues"},"dist":{"shasum":"0aade6ec07d829d16a1f7a14ed14bb5ee221b73f","tarball":"https://registry.npmjs.org/eslint-formatter-teamcity/-/eslint-formatter-teamcity-1.0.0.tgz","fileCount":22,"integrity":"sha512-YSCMrJYOcRILlyaDKRX8cLrWx2/50Ro5je4/7127ZoNGRT73oeRPBghg8970CiXm7cvvPIq53rcLvCOBUf5VAA==","signatures":[{"sig":"MEQCIFmF4YOFAMAofaMExycvPMwXDTkoW4sNI6xkUXYiEA3yAiBCdgeGkIxzHCXcBaJgcEXMlQwj1FWwIIBhWfJYUgPuVw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":43914,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiKGPxACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpE+BAAo8IpX9zVRrWaQ21/EQeTQmQxYJU8YiBadMEJ16Iae3J5tA9/\r\nU7L35SFp9p9PAIarHI20yMMXP6QyF5uu+/aXT87j2rLlJxEsXFoCO/orFKKL\r\nFpn3dW3U7lkPV2V78Ix7N1PsHLfPoAXNWEFxy5yalD6Y70/27oP/4xiaXl8+\r\nGze1wj8j+mmgli5mi9FyUpTvoLSzGOyHlubCA6Z8viM237AcuPJ4u1+jzWxv\r\n9lNvLzRYMyJf6GhLAvQeJ83KxPgwc9laySl1d84m7Mzs63FAZHoEHo2DfxRx\r\n7HgBohGlRVKwxtc/B/oiZY+j/y480SoNJZvRo5SvK/grD8gFjB59VEGHoJdM\r\nzeVToEOwgLZNoJPZKlNYpo7slK9L6/N95zsULwXUNdD5wqGDSM2Kc6LpHhkF\r\nhNpPLyy2TNLmdnwvWFVctLi8kTDEg9vr1ZDPYtqdSJJEanJ6QAvlTbCC5H1r\r\nu86NAqtCFMYS87Idl5U9UnAn5T2TZr1XYYr0IkVwaAkTxMmKMrcnwXnzZjHd\r\nYnTauN6IBBRsL3yKZ/G0ZD39jwsVzKCLt89hlDHxE0yzw+V7iRSaiMQfp0o3\r\n1Zzog6d59NzfLp89Sd8YyVxYYP2qjKJKY5xCQR0WZBQ4v2Nyelw3XWX02zD+\r\nR91stZ6HjFD/VFn0jzYAnvYhnfGl6+ma5u4=\r\n=Lzmi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"2e2164e9f41180dfb30bd603f7576af94c20e5df","scripts":{"lint":"eslint .","test":"mocha \"./test/**/*.spec.js\"","prettify":"prettier --write \"./src/**/*.js\" --write \"./test/**/*.js\"","pretty-quick":"pretty-quick --staged --pattern \"**/*.*(js|ts)\"","test:coverage":"nyc npm test && nyc report --reporter=text-lcov | coveralls"},"_npmUser":{"name":"andreogle","email":"ogleandre@gmail.com"},"repository":{"url":"git://github.com/andreogle/eslint-formatter-teamcity.git","type":"git"},"_npmVersion":"7.19.0","description":"An ESLint formatter plugin for TeamCity","directories":{},"_nodeVersion":"14.17.1","dependencies":{"fs-extra":"^10.0.x"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.1.0","chai":"^4.3.4","husky":"^7.0.4","mocha":"^9.1.3","sinon":"^13.0.0","eslint":"^8.6.0","shelljs":"^0.8.4","prettier":"^2.5.1","coveralls":"^3.1.1","pretty-quick":"^3.1.3","@types/eslint":"^8.2.1","mocha-lcov-reporter":"^1.3.0","eslint-plugin-import":"^2.25.4","eslint-config-airbnb-base":"^15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-formatter-teamcity_1.0.0_1646814193205_0.6537071492768831","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"eslint-formatter-teamcity","version":"2.0.0","keywords":["eslint","teamcity","formatter","linting"],"author":{"url":"https://github.com/andreogle","name":"Andre Ogle","email":"ogleandre@gmail.com"},"license":"MIT","_id":"eslint-formatter-teamcity@2.0.0","maintainers":[{"name":"andreogle","email":"ogleandre@gmail.com"}],"homepage":"https://github.com/andreogle/eslint-formatter-teamcity#readme","bugs":{"url":"https://github.com/andreogle/eslint-formatter-teamcity/issues"},"dist":{"shasum":"baae6b1c316a75bb8381bc4c9dc4a4d6b6d45beb","tarball":"https://registry.npmjs.org/eslint-formatter-teamcity/-/eslint-formatter-teamcity-2.0.0.tgz","fileCount":24,"integrity":"sha512-LJD2z0/imJ5rJEMbU0yX+KOTGrnBXj7XJ4KzEtbSD8WDt9wOtkK90B9IIpwFwjqRVwKvTju1xATseI0SQdobiQ==","signatures":[{"sig":"MEYCIQD6DXFfYv4NUxC9nlmQjKwUyvWTvehEMcewj2qfrHHSTAIhALSezxMrHXDLfxGxOKqOxwUy1QdtH7l2rF3j0faIDHdb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45156},"main":"index.js","types":"./index.d.ts","exports":{".":{"import":"./index.mjs","require":"./index.js"}},"gitHead":"3d32c1045e1e438694e52be78285a81e87af1fb6","scripts":{"lint":"eslint .","test":"node --test \"./test/**/*.spec.js\"","prepare":"husky","prettify":"prettier --write \"./src/**/*.js\" --write \"./test/**/*.js\"","pretty-quick":"pretty-quick --staged --pattern \"**/*.*(js|ts)\"","test:coverage":"node --test --experimental-test-coverage \"./test/**/*.spec.js\""},"_npmUser":{"name":"andreogle","email":"ogleandre@gmail.com"},"repository":{"url":"git://github.com/andreogle/eslint-formatter-teamcity.git","type":"git"},"_npmVersion":"11.8.0","description":"An ESLint formatter plugin for TeamCity","directories":{},"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"devDependencies":{"husky":"^9.0.0","eslint":"^9.30.0","prettier":"^3.0.0","pretty-quick":"^4.0.0","@types/eslint":"^9.6.1","eslint-plugin-import":"^2.28.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-formatter-teamcity_2.0.0_1770487749858_0.7189888619048588","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"eslint-formatter-teamcity","version":"2.0.1","description":"An ESLint formatter plugin for TeamCity","author":{"name":"Andre Ogle","email":"ogleandre@gmail.com","url":"https://github.com/andreogle"},"license":"MIT","bugs":{"url":"https://github.com/andreogle/eslint-formatter-teamcity/issues"},"main":"index.js","types":"index.d.ts","exports":{".":{"import":{"types":"./index.d.mts","default":"./index.mjs"},"require":{"types":"./index.d.ts","default":"./index.js"}}},"scripts":{"lint":"eslint .","prepare":"husky","prettify":"prettier --write \"./src/**/*.js\" --write \"./test/**/*.js\"","pretty-quick":"pretty-quick --staged --pattern \"**/*.*(js|ts)\"","test":"node --test \"./test/**/*.spec.js\"","test:coverage":"node --test --experimental-test-coverage \"./test/**/*.spec.js\""},"repository":{"type":"git","url":"git://github.com/andreogle/eslint-formatter-teamcity.git"},"keywords":["eslint","teamcity","formatter","linting"],"devDependencies":{"@types/eslint":"^9.6.1","eslint":"^9.30.0","eslint-plugin-import":"^2.28.0","husky":"^9.0.0","prettier":"^3.0.0","pretty-quick":"^4.0.0"},"gitHead":"9fb7839a6c1d410e99efd0861d2c03abb2f7f3b3","_id":"eslint-formatter-teamcity@2.0.1","homepage":"https://github.com/andreogle/eslint-formatter-teamcity#readme","_nodeVersion":"22.19.0","_npmVersion":"11.8.0","dist":{"integrity":"sha512-yR4I3GiuSbp2x7ZbcyFVsYTAzwnwPft94w7l4wjPfsbKbiKkLCh1EcYoISpMnT3PyfIvEmxuyuWnHOdYUMjmHg==","shasum":"ee14d00ce7b486f86988dc32450d8ae3ca8c5096","tarball":"https://registry.npmjs.org/eslint-formatter-teamcity/-/eslint-formatter-teamcity-2.0.1.tgz","fileCount":24,"unpackedSize":45306,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEZGxcPRpPaA/tBDIehr1wykzlmaSGL7h/qgighKJDL7AiB1QllDa5mJTfMHyKZWsFo9rCtNmq+wuvEyINO4+DuZbw=="}]},"_npmUser":{"name":"andreogle","email":"ogleandre@gmail.com"},"directories":{},"maintainers":[{"name":"andreogle","email":"ogleandre@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/eslint-formatter-teamcity_2.0.1_1770488200365_0.9265032614860134"},"_hasShrinkwrap":false}},"time":{"created":"2022-03-09T08:23:13.204Z","modified":"2026-02-07T18:16:40.625Z","1.0.0":"2022-03-09T08:23:13.334Z","2.0.0":"2026-02-07T18:09:10.009Z","2.0.1":"2026-02-07T18:16:40.506Z"},"bugs":{"url":"https://github.com/andreogle/eslint-formatter-teamcity/issues"},"author":{"name":"Andre Ogle","email":"ogleandre@gmail.com","url":"https://github.com/andreogle"},"license":"MIT","homepage":"https://github.com/andreogle/eslint-formatter-teamcity#readme","keywords":["eslint","teamcity","formatter","linting"],"repository":{"type":"git","url":"git://github.com/andreogle/eslint-formatter-teamcity.git"},"description":"An ESLint formatter plugin for TeamCity","maintainers":[{"name":"andreogle","email":"ogleandre@gmail.com"}],"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> 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 -> 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 <path to data directory>:/data/teamcity_server/datadir \\\n    -v <path to logs directory>:/opt/teamcity/logs  \\\n    -p 8111:8111 \\\n    jetbrains/teamcity-server\n\ndocker run -itd --name teamcity-agent-1  \\\n    -e SERVER_URL=\"http://<ngrok id>.ngrok.io\"  \\\n    -v <path to agent data>:/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","readmeFilename":"README.md"}