Skip to content

AkashRajpurohit/ts-npm-template

Repository files navigation

🫑 @akashrajpurohit/ts-npm-template

A project template to bootstrap NPM package with Typescript


Build states npm latest version npm bundle size Visitors count Coverage NPM license follow on twitter

Bug report Β· Feature request Β· Read Docs



@akashrajpurohit/ts-npm-template is a opinionated bootstrap template to create NPM packages.

Read more about the template and how it works in this guide.

Usage πŸ’»

Click on the "Use this template" button from the options to create a new repository using this template. This will create a new repository with the same structure as this repository.

That is pretty much it, follow the configuration steps for setting up your package and its done πŸŽ‰

Technology stack πŸš€

  • πŸ™πŸΎ Typescript with tsup build tool.
  • ⚑️ Vitest - Unit Test Framework
  • πŸ“¦ Changesets - A way to manage your versioning and changelogs.
  • πŸ“– Typedoc - Generate documentation of your package.
  • πŸ”€ Github Actions - CI pipelines
  • πŸ’ͺ PNPM - Package manager

Configurations βš™οΈ

Github Actions

In order for changesets to be able to create pull requests, you need to allow it to create and approve pull requests. You can find these settings under the repository settings in the "Actions" tab.

Allow changesets to create pull requests

Release to NPM

Few configurations are required for making the publishing and releasing to NPM automated.

First thing is to generate a NPM token. Automation tokens are recommended since they can be used for an automated workflow, even when your account is configured to use the auth-and-writes level of 2FA.

Save this token as NPM_TOKEN in github actions secrets.

Code coverage badge

If you want to generate a code coverage badge for your package, you need to follow the steps and configure the gist mentioned by dynamic-badges-action.

You need to add the GIST_SECRET in the github actions secrets if you are planning to add the code coverage badge.

Once you have followed the steps above and created a gist, uncomment these lines in the workflow file

- name: Get Coverage for badge πŸ”’
  run: |
    COVERAGE="$(cat coverage/coverage-summary.json | jq -r '.total.lines.pct')"
    echo "COVERAGE=$(echo ${COVERAGE})" >> $GITHUB_ENV

- name: Create coverage badge ✍🏽
  uses: schneegans/dynamic-badges-action@v1.6.0
  with:
    auth: ${{ secrets.GIST_SECRET }}
    gistID: <gist-id>
    filename: <file-name>.json
    label: Code Coverage
    message: ${{ env.COVERAGE }}
    color: green
    namedLogo: vitest

Note: Make sure you change the <gist-id> and <file-name> in the ci.yml file along with the gist id in the coverage badge link in the README.md file.

Auto generate docs πŸ“š

The project is configured to auto-generate the documentation using typedoc. The documentation is generated in the docs folder.

The documentation will get generated when the code is pushed to the main branch. You can also generate the documentation locally by running the command pnpm run build:docs.

Contributing πŸ«±πŸ»β€πŸ«²πŸΌ

Follow the contribution guidelines to contribute to this project.

Bugs or Requests πŸ›

If you encounter any problems feel free to open an issue. If you feel the project is missing a feature, please raise a ticket on GitHub and I'll look into it. Pull requests are also welcome.

Projects using this template πŸ™ŒπŸ½

Are you using this template for your project? Feel free to open a PR and add your project to the list.

Where to find me? πŸ‘€

Website Badge Twitter Badge Linkedin Badge Instagram Badge Telegram Badge