{"id":35201563,"url":"https://github.com/escemi-tech/ts-dev-tools","last_synced_at":"2026-06-03T23:00:51.938Z","repository":{"id":37092219,"uuid":"306680259","full_name":"escemi-tech/ts-dev-tools","owner":"escemi-tech","description":"Opinionated and advisable packages to configure tools to develop a Typescript project","archived":false,"fork":false,"pushed_at":"2026-06-01T05:05:11.000Z","size":12448,"stargazers_count":2,"open_issues_count":3,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-01T07:08:58.960Z","etag":null,"topics":["commit-lint","developer-tools","eslint","hooks","husky","jest","prettier","type","typescript"],"latest_commit_sha":null,"homepage":"https://escemi-tech.github.io/ts-dev-tools/","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/escemi-tech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING","funding":".github/FUNDING.yml","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["neilime"]}},"created_at":"2020-10-23T15:46:31.000Z","updated_at":"2026-06-01T05:05:15.000Z","dependencies_parsed_at":"2022-08-08T19:15:27.623Z","dependency_job_id":"2bf5f23c-61ab-4d0c-bdf8-a76899d7028f","html_url":"https://github.com/escemi-tech/ts-dev-tools","commit_stats":null,"previous_names":[],"tags_count":198,"template":false,"template_full_name":null,"purl":"pkg:github/escemi-tech/ts-dev-tools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/escemi-tech%2Fts-dev-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/escemi-tech%2Fts-dev-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/escemi-tech%2Fts-dev-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/escemi-tech%2Fts-dev-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/escemi-tech","download_url":"https://codeload.github.com/escemi-tech/ts-dev-tools/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/escemi-tech%2Fts-dev-tools/sbom","scorecard":{"id":382325,"data":{"date":"2025-08-11","repo":{"name":"github.com/escemi-tech/ts-dev-tools","commit":"116865dccc9ca99593271ec2b400fd350372e612"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":6.1,"checks":[{"name":"Maintained","score":10,"reason":"30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 0/3 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/__shared-ci.yml:11","Warn: jobLevel 'security-events' permission set to 'write': .github/workflows/__shared-ci.yml:12","Info: jobLevel 'contents' permission set to 'read': .github/workflows/release.yml:51","Warn: no topLevel permission defined: .github/workflows/__shared-ci.yml:1","Info: topLevel 'contents' permission set to 'read': .github/workflows/greetings.yml:10","Warn: no topLevel permission defined: .github/workflows/main-ci.yml:1","Info: topLevel 'contents' permission set to 'read': .github/workflows/need-fix-to-issue.yml:18","Warn: no topLevel permission defined: .github/workflows/pull-request-ci.yml:1","Warn: no topLevel permission defined: .github/workflows/release.yml:1","Warn: topLevel 'contents' permission set to 'write': .github/workflows/semantic-pull-request.yml:11"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":10,"reason":"all dependencies are pinned","details":["Info:   7 out of   7 GitHub-owned GitHubAction dependencies pinned","Info:   6 out of   6 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: all commits (27) are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-18T15:45:15.709Z","repository_id":37092219,"created_at":"2025-08-18T15:45:15.709Z","updated_at":"2025-08-18T15:45:15.709Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33883102,"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-03T02:00:06.370Z","response_time":59,"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":["commit-lint","developer-tools","eslint","hooks","husky","jest","prettier","type","typescript"],"created_at":"2025-12-29T11:21:58.855Z","updated_at":"2026-06-03T23:00:51.929Z","avatar_url":"https://github.com/escemi-tech.png","language":"TypeScript","funding_links":["https://github.com/sponsors/neilime"],"categories":[],"sub_categories":[],"readme":"[![Homepage](https://repository-images.githubusercontent.com/306680259/8d077b80-19cd-11eb-8625-f2b1a474d4a9)](https://github.com/escemi-tech/ts-dev-tools)\n\n[![npm](https://img.shields.io/npm/v/@ts-dev-tools/core)](https://www.npmjs.com/search?q=%40ts-dev-tools)\n[![Continuous Integration](https://github.com/escemi-tech/ts-dev-tools/actions/workflows/main-ci.yml/badge.svg)](https://github.com/escemi-tech/ts-dev-tools/actions/workflows/main-ci.yml)\n[![Code coverage](https://codecov.io/gh/escemi-tech/ts-dev-tools/branch/main/graph/badge.svg?token=mVB3P7BFzR)](https://codecov.io/gh/escemi-tech/ts-dev-tools)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING)\n[![Sponsor](https://img.shields.io/badge/%E2%9D%A4-Sponsor-ff69b4)](https://github.com/sponsors/neilime)\n[![GitHub stars](https://img.shields.io/github/stars/escemi-tech/ts-dev-tools?logo=github)](https://github.com/escemi-tech/ts-dev-tools)\n\n---\n\n# Welcome to ts-dev-tools 🛠️\n\n## Opinionated and advisable packages to configure tools to develop a Typescript project\n\n---\n\n## Why **ts-dev-tools** ?\n\n### _1_. Aims to provide a first-class developper experience\n\nInstall **ts-dev-tools** and your project is dev ready, no more installation or setup, it just works\n\n### _2_. A fine tuned collection of tools and configuration ready for a realworld project\n\nWithin the dozen of existing packages, **ts-dev-tools** uses a short list of consistent libraries and their recommanded configuration.\n**ts-dev-tools** is used by various real world projects to be run in production, so its toolset is effective and meets industry standards.\n\n### _3_. Stable and secure\n\nFor every changes and dependency update, **ts-dev-tools** is:\n\n- [Unit \u0026 E2E tested](https://github.com/escemi-tech/ts-dev-tools/actions?query=workflow%3A%22Continuous+Integration%22): [coverage report](https://codecov.io/gh/escemi-tech/ts-dev-tools)\n- Audited for known vulnerabilities with [CodeQL](https://github.com/escemi-tech/ts-dev-tools/security/code-scanning)\n\n### _3_. One package to rule them all, one dependency to keep up to date\n\nDependencies are updated all weeks in order to keep dev tools up to date agains security issues and to give access to the latest available feature.\n\nUsing **ts-dev-tools** you should just have to update it and you'll have all the dev dependencies used by **ts-dev-tools**, up to date !\n\n## Usage\n\n### _1_. Choose the plugin that fits with you need\n\n| Name                                              | Description                                                                 |\n| ------------------------------------------------- | --------------------------------------------------------------------------- |\n| [@ts-dev-tools/core](./packages/core/README.md)   | Common Typescript tools (Eslint and prettier, lint-staged and pretty-quick) |\n| [@ts-dev-tools/react](./packages/react/README.md) | Dev tools for a for [ReactJS](https://reactjs.org/) project                 |\n\n### _2_. Install\n\n_Example with plugin `@ts-dev-tools/core`, replace `@ts-dev-tools/core` by the plugin you want to use_\n\n```sh\nnpm install --save-dev @ts-dev-tools/core\n```\n\nOr\n\n```sh\nyarn add --dev @ts-dev-tools/core\n```\n\nOr\n\n```sh\npnpm add -D @ts-dev-tools/core\n```\n\n### _3_. Enable ts-dev-tools\n\n```sh\nnpx ts-dev-tools install\n```\n\nOr\n\n```sh\nyarn ts-dev-tools install\n```\n\nOr\n\n```sh\npnpm ts-dev-tools install\n```\n\n⚠️ If your package is using yarn, is not private and you're publishing it on a registry like npmjs.com, you need to disable postinstall script using [pinst](https://github.com/typicode/pinst). Otherwise, postinstall will run when someone installs your package and result in an error.\n\n---\n\n## Author\n\n👤 **Escemi \u003ccontact@escemi.com\u003e**\n\n- Website: https://www.escemi.com\n- LinkedIn: [@escemi](https://www.linkedin.com/company/escemi)\n\n## 🤝 Contributing\n\nContributions, issues and feature requests are welcome!\u003cbr /\u003eFeel free to check [issues page](https://github.com/escemi-tech/ts-dev-tools/issues). You can also take a look at the [contributing guide](CONTRIBUTING) and [Contributor Code of Conduct](CODE-OF-CONDUCT.md).\n\n### Developer setup\n\n```sh\nnpm install\n```\n\n### Checks\n\n```sh\nnpm run lint\nnpm run test\nnpm run build\n```\n\nOr run everything in one command:\n\n```sh\nnpm run ci\n```\n\n### Clean cache\n\nFor some reason, if you need to clean cache, you can run the following commands:\n\n```sh\n# Test cache\nrm -rf node_modules/.cache/ts-dev-tools\n# NX cache\nnpx nx reset\n```\n\n## Show your support\n\nGive a ⭐️ if this project helped you!\n\n## 📝 License\n\nThis project is [MIT](LICENSE) licensed.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fescemi-tech%2Fts-dev-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fescemi-tech%2Fts-dev-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fescemi-tech%2Fts-dev-tools/lists"}