{"id":13596908,"url":"https://github.com/alexcanessa/typescript-coverage-report","last_synced_at":"2025-05-14T10:14:30.321Z","repository":{"id":41955218,"uuid":"247491847","full_name":"alexcanessa/typescript-coverage-report","owner":"alexcanessa","description":"Node command tool to generate TypeScript coverage report","archived":false,"fork":false,"pushed_at":"2025-02-28T08:21:46.000Z","size":2015,"stargazers_count":504,"open_issues_count":33,"forks_count":33,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-13T13:54:54.040Z","etag":null,"topics":["coverage","coverage-report","ts","type-coverage","typescript","typescript-coverage"],"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/alexcanessa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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}},"created_at":"2020-03-15T15:16:22.000Z","updated_at":"2025-03-25T17:26:05.000Z","dependencies_parsed_at":"2024-06-18T12:42:57.891Z","dependency_job_id":"c80c714a-1152-499b-8e51-940d1042b09a","html_url":"https://github.com/alexcanessa/typescript-coverage-report","commit_stats":{"total_commits":154,"total_committers":17,"mean_commits":9.058823529411764,"dds":0.5909090909090908,"last_synced_commit":"7344574b8a667d6dbf4f546d798b041e25613528"},"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexcanessa%2Ftypescript-coverage-report","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexcanessa%2Ftypescript-coverage-report/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexcanessa%2Ftypescript-coverage-report/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexcanessa%2Ftypescript-coverage-report/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexcanessa","download_url":"https://codeload.github.com/alexcanessa/typescript-coverage-report/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248724586,"owners_count":21151559,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["coverage","coverage-report","ts","type-coverage","typescript","typescript-coverage"],"created_at":"2024-08-01T16:02:56.541Z","updated_at":"2025-04-13T13:54:59.705Z","avatar_url":"https://github.com/alexcanessa.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# TypeScript Coverage Report\n\n[![npm version](https://badge.fury.io/js/typescript-coverage-report.svg)](https://badge.fury.io/js/typescript-coverage-report)\n[![npm downloads](https://img.shields.io/npm/dw/typescript-coverage-report.svg)](https://www.npmjs.com/package/typescript-coverage-report)\n[![standard-readme compliant](https://img.shields.io/badge/readme%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/RichardLitt/standard-readme)\n[![MIT Licence](https://badges.frapsoft.com/os/mit/mit.svg?v=103)](https://opensource.org/licenses/mit-license.php)\n[![Automated Release Notes by gren](https://img.shields.io/badge/%F0%9F%A4%96-release%20notes-00B2EE.svg)](https://github-tools.github.io/github-release-notes/)\n\n\u003c!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --\u003e\n[![All Contributors](https://img.shields.io/badge/all_contributors-18-orange.svg?style=flat-square)](#contributors-)\n\u003c!-- ALL-CONTRIBUTORS-BADGE:END --\u003e\n\nNode command line tool for generating TypeScript coverage reports ✨\n\n## Overview\n\nThis package fills the gap of a missing type coverage reporting tool which is present in the Flow ecosystem, strongly inspired by the amazing work done by [`flow-coverage-report`](https://github.com/rpl/flow-coverage-report) and using data generated by [`type-coverage`](https://github.com/plantain-00/type-coverage).\n\n[See an example of the coverage report](https://alexcanessa.github.io/typescript-coverage-report/).\n\n### Background\n\nTo learn more about the reasoning behind this project and its roadmap, please refer to the following article: [**How I built a TS coverage report tool**](https://medium.com/@alexcanessa/how-did-i-build-a-ts-coverage-report-tool-af34e110d02c?sk=de2eb6c78e581aa8d9979629300873b3)\n\n## Install\n\n`typescript-coverage-report` can be installed locally or globally.\n\nUsers are advised to install it as a project _(dev)_ dependency and create a script in `package.json`.\n\n```shell\n$ yarn add --dev typescript-coverage-report\n\n# OR\n\n$ npm install --save-dev typescript-coverage-report\n```\n\n## Usage\n\nIf installed locally, add the following to the _scripts_ section of `package.json`.\n\n```json\n\"scripts\": {\n  \"ts-coverage\": \"typescript-coverage-report\"\n}\n```\n\nThen run:\n\n```shell\n$ yarn ts-coverage\n\n# OR\n\n$ npm run ts-coverage\n```\n\nTo set the minimum threshold _(80% by default)_, use the `--threshold` option.\n\n```shell\n$ yarn ts-coverage --threshold=99\n```\n\nAs an alternative, options may be provided through the `type-coverage` [configuration](https://github.com/plantain-00/type-coverage#config-in-packagejson), specified in `package.json`.\n\n```json\n\"typeCoverage\": {\n  \"atLeast\": 90\n}\n```\n\n![terminal table](images/screenshot-table.png)\n\n![summary page](images/screenshot-summary.png)\n\n![details page](images/screenshot-details.png)\n\n## Options\n\nThe CLI accepts a list of arguments:\n\n| Option                          | Description                                                                            | Default value |\n| ------------------------------- | -------------------------------------------------------------------------------------- | ------------- |\n| `-t, --threshold [number]`      | The minimum percentage of coverage required.                                           | 80            |\n| `-o, --outputDir [string]`      | The output directory where to generate the report.                                     | coverage-ts   |\n| `-s, --strict [boolean]`        | Run the check in strict mode.                                                          | false         |\n| `-d, --debug [boolean]`         | Show debug information.                                                                | false         |\n| `-c, --cache [boolean]`         | Save and reuse type check result from cache.                                           | false         |\n| `-p, --project [string]`        | File path to tsconfig file, eg: --project \"./app/tsconfig.app.json\"                    | .             |\n| `-i, --ignore-files [boolean]`  | Ignore specified files, eg: --ignore-files \"demo1/\\*.ts\" --ignore-files \"demo2/foo.ts\" | false         |\n| `-u, --ignore-unread [boolean]` | Allow writes to variables with implicit any types                                      | false         |\n\n## Maintainers\n\n[@alexcanessa](https://github.com/alexcanessa)\n\n## Contributing\n\nFeel free to dive in! [Open an issue](https://github.com/alexcanessa/typescript-coverage-report/issues/new/choose) or submit PRs.\n\nOn this project we follow the [Contributor Covenant Code of Conduct](https://www.contributor-covenant.org/version/1/3/0/code-of-conduct/).\n\n### Developing\n\nThanks for contributing!\n\nRemember to run the following commands to link your version of this package and build the TypeScript files.\n\n```bash\n# Link the package globally, so you'll be able to test it in other projects.\n$ yarn link\n# Builds the TypeScript files and watches for changes\n$ yarn build --watch\n```\n\n### Commit messages\n\nThis project follows the [Angular commit messages](https://github.com/angular/angular/blob/master/CONTRIBUTING.md#commit), but it's very open to emojis 🤯.\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  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/tsaiDavid\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/12259854?v=4?s=100\" width=\"100px;\" alt=\"David Tsai\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDavid Tsai\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/alexcanessa/typescript-coverage-report/commits?author=tsaiDavid\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"https://github.com/alexcanessa/typescript-coverage-report/issues?q=author%3AtsaiDavid\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://wvvw.me\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/6525926?v=4?s=100\" width=\"100px;\" alt=\"Alexis Tyler\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAlexis Tyler\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/alexcanessa/typescript-coverage-report/issues?q=author%3AOmgImAlexis\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://effectivetypescript.com\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/98301?v=4?s=100\" width=\"100px;\" alt=\"Dan Vanderkam\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDan Vanderkam\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/alexcanessa/typescript-coverage-report/commits?author=danvk\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://dignat.se\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/2315367?v=4?s=100\" width=\"100px;\" alt=\"Daniel Edholm Ignat\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDaniel Edholm Ignat\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/alexcanessa/typescript-coverage-report/commits?author=dignite\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://kyle.kiwi\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/16009897?v=4?s=100\" width=\"100px;\" alt=\"Kyℓe Hensel\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eKyℓe Hensel\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/alexcanessa/typescript-coverage-report/commits?author=k-yle\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/cabello\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/60936?v=4?s=100\" width=\"100px;\" alt=\"Danilo Cabello\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDanilo Cabello\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/alexcanessa/typescript-coverage-report/commits?author=cabello\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://sanjaypojo.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/4957294?v=4?s=100\" width=\"100px;\" alt=\"Sanjay Guruprasad\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSanjay Guruprasad\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/alexcanessa/typescript-coverage-report/issues?q=author%3Asanjaypojo\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://stackexchange.com/users/4249831/luislhl?tab=accounts\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/5041650?v=4?s=100\" width=\"100px;\" alt=\"Luis Helder\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eLuis Helder\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/alexcanessa/typescript-coverage-report/issues?q=author%3Aluislhl\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/tomardern\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1135454?v=4?s=100\" width=\"100px;\" alt=\"Tom Ardern\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eTom Ardern\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/alexcanessa/typescript-coverage-report/issues?q=author%3Atomardern\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/alexcanessa/typescript-coverage-report/commits?author=tomardern\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/lroskoshin\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/53659626?v=4?s=100\" width=\"100px;\" alt=\"lroskoshin\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003elroskoshin\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/alexcanessa/typescript-coverage-report/commits?author=lroskoshin\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/MhMadHamster\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/4090965?v=4?s=100\" width=\"100px;\" alt=\"Max Burmagin\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMax Burmagin\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/alexcanessa/typescript-coverage-report/commits?author=MhMadHamster\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://ceramichacker.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/38059171?v=4?s=100\" width=\"100px;\" alt=\"Alexander Skvortsov\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAlexander Skvortsov\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/alexcanessa/typescript-coverage-report/commits?author=askvortsov1\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://www.linkedin.com/in/adicuco/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/16133586?v=4?s=100\" width=\"100px;\" alt=\"Adi Cucolaș\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAdi Cucolaș\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/alexcanessa/typescript-coverage-report/commits?author=adicuco\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/StaRenn\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/58230797?v=4?s=100\" width=\"100px;\" alt=\"Stanislav Golyshev\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eStanislav Golyshev\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/alexcanessa/typescript-coverage-report/commits?author=StaRenn\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/roikoren755\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/26850796?v=4?s=100\" width=\"100px;\" alt=\"roikoren755\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eroikoren755\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/alexcanessa/typescript-coverage-report/commits?author=roikoren755\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/jinphic\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/78671853?v=4?s=100\" width=\"100px;\" alt=\"jinphic\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ejinphic\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/alexcanessa/typescript-coverage-report/commits?author=jinphic\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://brandonbarker.me\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/4194371?v=4?s=100\" width=\"100px;\" alt=\"Brandon Barker\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eBrandon Barker\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/alexcanessa/typescript-coverage-report/commits?author=ProjectBarks\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://stanyslasbres.fr\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/15731884?v=4?s=100\" width=\"100px;\" alt=\"Stanyslas Bres\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eStanyslas Bres\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/alexcanessa/typescript-coverage-report/commits?author=sybers\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\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\n## Licence\n\n[MIT](https://spdx.org/licenses/MIT.html) @ Alessandro Canessa\n\n[![forthebadge](https://forthebadge.com/images/badges/built-with-love.svg)](https://forthebadge.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexcanessa%2Ftypescript-coverage-report","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexcanessa%2Ftypescript-coverage-report","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexcanessa%2Ftypescript-coverage-report/lists"}