Boilerplate for a TypeScript npm package
- TypeScript configuration
ts-jest
setup for automated testing- ESLint rules &
editorconfig
for linting - Prettier and ESLint for deterministic code formatting
- CI - build, lint & test
- CD - automated publishing to both npm and the GitHub Package Registry
- GitHub Releases generated with automatic changelogs populated via a configurable template
- Dependabot configuration
- VSCode settings
Publishing is handled by a continuous delivery workflow within GitHub Actions. By default, new versions are dual-published to both npm
and gpr
(the GitHub Package Registry.) Comment one out in .github/workflows/publish.yml
to only use one. If you would like to publish to npm
, create a NPM_TOKEN
repository secret. Publishing to gpr
does not require an auth token.
First, determine what kind of semantic versioning bump this release will require. Updates should fall into one of three categories: major
(new functionality with breaking changes) minor
(new functionality without breaking changes) or patch
(backwards compatible bug fixes).
To publish a new release, checkout the make sure your git repository is clean and run one of the following commands:
npm run release:major
(new functionality with breaking changes)npm run release:minor
(new functionality without breaking changes)npm run release:patch
(backwards compatible bug fixes)
Running any one of these will:
- Increment the version number in
package.json
- Create a git tag with the new version number
- Push these changes to GitHub, which triggers the
release
workflow in GitHub Actions - The
release
workflow then creates a new GitHub release with changelog automatically populated with all PRs and commits since the last version - The
publish
workflow is then triggered when therelease
workflow completes. It compiles the package and pushes it up tonpm
/gpr