TS template for backend packages/apps. It provides a working set of
packages/resources ready to be used. Just put your code under src
and you'll
be ready to go.
- TypeScript 5+
- TSConfig Paths (transforms
import x from '@/sample'; @/ => src/
) - Node 19+
- NPM 7+
- Commitlint
- Eslint (typescript)
- Prettier (on eslint)
- Jest (with ts-jest)
- Editorconfig
- Husky hooks
- Semantic-release (automatically publishes this repo on NPM)
This repo comes with 3 git hooks handled by Husky hooks:
commit-msg
which checks if commit messages are under conventional commit formatpre-commit
which runsnpm run lint:check
to validate code formatting before actual committingpre-push
which runsnpm run test
before pushing code
This repo uses commitlint to validate and standardize commit
messages. This is also necessary for the release/publish step, which looks for this kind of message
format to detect the correct version changes. Make sure you use it on your work, or let the
commit-msg
hook validate it for you. Conventional Commits is a good complementary read also.
All you have to do is commit like those below examples:
// see formats on https://commitlint.js.org/#/concepts-commit-conventions
$ git commit -m 'feat: this change is related to a feature'
$ git commit -m 'refactor: adjust something'
$ git commit -m 'docs: change on README.md'
$ git commit -m 'chore: update CI'
This repo has all things necessary to be published as a public package on NPM. All you need to do is to:
- Create a NPM access token (https://docs.npmjs.com/creating-and-viewing-access-tokens)
- Create a repository secret called
NPM_TOKEN
with the value above - Create a Github personal access token (https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token#creating-a-personal-access-token-classic)
- Create a repository secret called
GH_TOKEN
with the value above - Update the property
name
andrepository
onpackage.json
- That's it! Now every time a push/merge is made on branch
main
a release pipeline will run, building the application, generating a new tag to the repo, bumpingpackage.json
version on branchmain
according to the last commit change (check the.releaserc.js
) and publishing this to NPM, according to the config set onpackage.json
publishConfig
.