Yet another typescript library starter template
npm install @gjuchault/typescript-library-starter!NPM
!NPM
!GitHub Workflow Status
Yet another (opinionated) TypeScript library starter template.
If you're looking for a backend service starter, check out my typescript-service-starter
1. Relies as much as possible on each included library's defaults
2. Only relies on GitHub Actions
3. Does not include documentation generation
1. npx degit gjuchault/typescript-library-starter my-project or click on the Use this template button on GitHub!
2. cd my-project
3. npm install
4. git init (if you used degit)
5. node --run setup
To enable deployment, you will need to:
1. Set up the NPM_TOKEN secret in GitHub Actions (Settings > Secrets > Actions)
2. Give GITHUB_TOKEN write permissions for GitHub releases (Settings > Actions > General > Workflow permissions)
TypeScript Library Starter relies on Volta to ensure the Node.js version is consistent across developers. It's also used in the GitHub workflow file.
Leverages Typescript 7 for blazing-fast builds and type-checking.
Generates a single ESM build.
Commands:
- build: runs type checking, then ESM and d.ts files in the build/ directory
- clean: removes the build/ directory
- type:check: runs type checking
TypeScript Library Starter uses Node.js's native test runner. Coverage is done using c8 but will switch to Node.js's one once out.
Commands:
- test: runs test runner
- test:watch: runs test runner in watch mode
- test:coverage: runs test runner and generates coverage reports
This template relies on Biome to do both formatting & linting in no time.
It also uses cspell to ensure correct spelling.
Commands:
- lint: runs Biome with automatic fixing
- lint:check: runs Biome without automatic fixing (used in CI)
- spell:check: runs spell checking
Under the hood, this library uses semantic-release and Commitizen.
The goal is to avoid manual release processes. Using semantic-release will automatically create a GitHub release (hence tags) as well as an npm release.
Based on your commit history, semantic-release will automatically create a patch, feature, or breaking release.
Commands:
- cz: interactive CLI that helps you generate a proper git commit message, using Commitizen
- semantic-release: triggers a release (used in CI)