{"id":15017374,"url":"https://github.com/bennycode/ts-node-starter","last_synced_at":"2025-10-08T17:46:19.318Z","repository":{"id":38427169,"uuid":"205136166","full_name":"bennycode/ts-node-starter","owner":"bennycode","description":"GitHub template to get started with Node.js \u0026 TypeScript. ⚡","archived":false,"fork":false,"pushed_at":"2025-03-31T18:44:40.000Z","size":2411,"stargazers_count":57,"open_issues_count":0,"forks_count":8,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-31T19:37:03.601Z","etag":null,"topics":["boilerplate","boilerplate-template","boilerplate-typescript","bootstrap","codecov","coverage","eslint","jasmine","nodejs","nyc","setup","template","typescript"],"latest_commit_sha":null,"homepage":"http://bennycode.com/ts-node-starter/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bennycode.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":null,"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},"funding":{"github":"bennycode","ko_fi":"bennycode"}},"created_at":"2019-08-29T10:12:47.000Z","updated_at":"2025-03-31T18:44:43.000Z","dependencies_parsed_at":"2023-10-28T10:21:41.518Z","dependency_job_id":"3f057c8d-7d7b-46ef-8174-be2007a8b047","html_url":"https://github.com/bennycode/ts-node-starter","commit_stats":{"total_commits":837,"total_committers":4,"mean_commits":209.25,"dds":0.5627240143369175,"last_synced_commit":"67a5ba7828bcd3309a8c5453f712e7f8fe843506"},"previous_names":[],"tags_count":4,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bennycode%2Fts-node-starter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bennycode%2Fts-node-starter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bennycode%2Fts-node-starter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bennycode%2Fts-node-starter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bennycode","download_url":"https://codeload.github.com/bennycode/ts-node-starter/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247773721,"owners_count":20993639,"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":["boilerplate","boilerplate-template","boilerplate-typescript","bootstrap","codecov","coverage","eslint","jasmine","nodejs","nyc","setup","template","typescript"],"created_at":"2024-09-24T19:50:22.648Z","updated_at":"2025-10-08T17:46:19.296Z","avatar_url":"https://github.com/bennycode.png","language":"JavaScript","funding_links":["https://github.com/sponsors/bennycode","https://ko-fi.com/bennycode"],"categories":[],"sub_categories":[],"readme":"# ts-node-starter\n\nThe `ts-node-starter` scaffolding project is a [template repository](https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-template-repository) which makes it easy for you to start a new Node.js project with TypeScript.\n\nUsing this template, you can build **standalone apps**, **libraries** and/or **CLI tools**. The `ts-node-starter` setup is configurable and comes with a lot of features included.\n\n## Features\n\n1. **Changelog generation** powered by [generate-changelog](https://github.com/lob/generate-changelog)\n1. **Automatic dependency updates** powered by [Dependabot](https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/about-dependabot-version-updates)\n1. **Continuous integration** powered by [GitHub Actions workflows](https://docs.github.com/en/actions/using-workflows)\n1. **Dependency management** powered by [npm](https://www.npmjs.com/)\n1. **Unit testing** powered by [Vitest](https://vitest.dev/)\n1. **Type definition export testing** powered by [attw](https://arethetypeswrong.github.io/)\n1. **Code coverage** powered by [v8](https://v8.dev/blog/javascript-code-coverage)\n1. **Type checking** powered by [TypeScript](https://www.typescriptlang.org/)\n1. **Streamlined scripts** powered by [Conventional Scripts](https://bennycode.com/conventionalscripts.org/)\n1. **Dependency violation reports** powered by [dependency-cruiser](https://www.npmjs.com/package/dependency-cruiser)\n\n## Usage\n\n\u003e [!TIP]  \n\u003e You can use this boilerplate for your own purposes. Just follow the steps below.\n\u003e\n\u003e By the way, if you like this style, check out other [alerts](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts) possible with [GitHub's Flavored Markdown Spec](https://github.github.com/gfm/).\n\n### Make it your own\n\n1. Replace all occurrences of \"bennycode\" with your own username (or organization name)\n1. Replace all occurrences of \"ts-node-starter\" with your project name (or repository name)\n1. Delete [CHANGELOG.md](./CHANGELOG.md)\n1. Delete [FUNDING.yml](./.github/FUNDING.yml)\n1. Start writing your code in the [\"src\" directory](./src)\n1. Run `npm install` and be happy! 😊\n\n### Build a standalone app\n\n**Source Code**\n\nIf you just want to write and run a Node.js app, checkout [\"src/start.ts\"](./src/start.ts).\n\n**References**\n\nYou can start your application by executing `yarn start`. If you want to debug your code, run `yarn debug` ([Debug Instructions](https://dev.to/typescripttv/debug-your-node-js-app-with-chrome-devtools-4c98)).\n\n### Build a Library\n\n**Source Code**\n\nIf you want to distribute your code as a Node.js library on [npm](https://www.npmjs.com/), you can have a look at [\"src/index.ts\"](./src/index.ts). If you build a library, I recommend to always ship an index file from where you export the code of your library for others.\n\n**References**\n\nIn the [\"package.json\" file](./package.json) you will also discover a \"main\" property which defines the entry point to your library when it gets imported by other developers. The value of the \"main\" property has to point to the transpiled JavaScript code.\n\n### Build a CLI\n\n**Source Code**\n\nIf you want to build a CLI tool for Node.js, you can have a look at [\"src/cli.ts\"](./src/cli.ts).\n\n**References**\n\nIn the [\"package.json\" file](./package.json) you will also discover a \"bin\" property which defines the executable name of your tool and the entry point to its transpiled JavaScript code.\n\nIf you don't want to publish a CLI, simply remove the \"bin\" property and the CLI script.\n\n## Conventions\n\n### Test Files\n\nI recommend to colocate your test code with your source code by naming your test files `*.test.ts`.\n\n### Changelog Generation\n\nThe automatic changelog generation is based on [Semantic Commit Messages](https://sparkbox.com/foundry/semantic_commit_messages). Simply use the suggested prefixes in your commit messages to make use of it. For example, if you commit a new feature use the \"feat\" prefix:\n\n**Commit Message:**\n\n\u003e feat: My new feature\n\nIf you are introducing a breaking change, add an exclamation mark (`!`) after the type or scope of your commit message:\n\n**Example:**\n\n\u003e refactoring!: Make file handlers asynchronous\n\nThis is as per [breaking change definition](https://www.conventionalcommits.org/en/v1.0.0/#commit-message-with--to-draw-attention-to-breaking-change) of Conventional Commits 1.0.0.\n\n## Updates\n\nThe dependencies of this boilerplate are updated regularly. If you prefer to update them yourself, you can also run the following command:\n\n```bash\nnpm update --save\n```\n\n## Inspiring Templates\n\nOther inspiring Node.js templates:\n\n- https://github.com/JoshuaKGoldberg/create-typescript-app\n\n## Important Refactorings\n\n1. Replaced [EditorConfig](https://editorconfig.org/) with [Prettier](https://prettier.io/) ([2e24f7b](https://github.com/bennycode/ts-node-starter/commit/2e24f7be5f427c26d6cc8281438a6398a211b75c))\n1. Replaced [Jasmine](https://jasmine.github.io/) with [Jest](https://jestjs.io/) ([41e9b42](https://github.com/bennycode/ts-node-starter/commit/41e9b42bb5b7ca364dbbabf1104955090003d1be))\n1. Replaced [action-dependabot-auto-merge](https://github.com/ahmadnassri/action-dependabot-auto-merge) with [Dependabot](https://github.com/dependabot) \u0026 [GitHub CLI](https://cli.github.com/) ([86d5696](https://github.com/bennycode/ts-node-starter/commit/86d5696113c2fb4907a1666e25d1b72d698b06a5))\n1. Replaced [husky](https://github.com/typicode/husky) with [Lefthook](https://github.com/evilmartians/lefthook) ([9c41615](https://github.com/bennycode/ts-node-starter/commit/9c4161509acf49e56042383c9ea340f68f248582))\n1. Replaced custom [ESLint](https://eslint.org/) Config with a [Shareable Config](https://eslint.org/docs/latest/developer-guide/shareable-configs) ([eef5927](https://github.com/bennycode/ts-node-starter/commit/eef59275e91f6f484f7a917fdd87b09318ebbad3))\n1. Replaced [@types/jest](https://www.npmjs.com/package/@types/jest) with [@jest/globals](https://jestjs.io/docs/getting-started#type-definitions) ([73c5bc2](https://github.com/bennycode/ts-node-starter/commit/73c5bc246de79ca2cc805a8b61e42bec39cb97fd))\n1. Replaced [Yarn 1](https://classic.yarnpkg.com/) with [npm](https://www.npmjs.com/) ([153b726](https://github.com/bennycode/ts-node-starter/commit/153b726761db302fa3ba57ed1d71aabae01d8394))\n1. Replaced [pretty-quick](https://www.npmjs.com/package/pretty-quick) with [Prettier 3](https://prettier.io/) ([7623ba8](https://github.com/bennycode/ts-node-starter/commit/7623ba894e6767d7da8ce5b8a1e2469639bcb027))\n1. Replaced [Jest](https://jestjs.io/) with [Vitest](https://vitest.dev/) ([662dddf](https://github.com/bennycode/ts-node-starter/commit/662dddf92d418d0e1119a04d8f5fe807a7a566f0))\n1. Replaced [CommonJS](https://nodejs.org/api/modules.html) with [EcmaScript Modules](https://nodejs.org/api/esm.html) ([0cae631](https://github.com/bennycode/ts-node-starter/commit/0cae631ca6457026919418ddb3a10f7858e9ad55))\n1. Replaced imports with [Vitest Globals](https://vitest.dev/config/#globals) ([6b273c3](https://github.com/bennycode/ts-node-starter/commit/6b273c3c09552d5aa829f48987c1c1dcf7a93ce9))\n1. Replaced [ts-node](https://github.com/TypeStrong/ts-node) with [tsimp](https://github.com/tapjs/tsimp) ([5db7e0c](https://github.com/bennycode/ts-node-starter/commit/bb74b2df59ecf41b3e0588df74ba2d4dcd830b44))\n\n## Contributors\n\n[![Benny Neugebauer on Stack Exchange][stack_exchange_bennycode_badge]][stack_exchange_bennycode_url]\n\n[![Panayiotis Lipiridis on Stack Exchange][stack_exchange_lipis_badge]][stack_exchange_lipis_url]\n\n[stack_exchange_bennycode_badge]: https://stackexchange.com/users/flair/203782.png?theme=default\n[stack_exchange_bennycode_url]: https://stackexchange.com/users/203782/benny-neugebauer?tab=accounts\n[stack_exchange_lipis_badge]: https://stackexchange.com/users/flair/5282.png?theme=default\n[stack_exchange_lipis_url]: https://stackexchange.com/users/5282/lipis?tab=accounts\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbennycode%2Fts-node-starter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbennycode%2Fts-node-starter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbennycode%2Fts-node-starter/lists"}