Yet another (opinionated) TypeScript library starter template.
- Relies as much as possible on each included library's defaults
- Only relies on GitHub Actions
- Does not include documentation generation
npx degit gjuchault/typescript-library-starter my-projector click on theUse this templatebutton on GitHub!cd my-projectnpm installgit init(if you used degit)npm run setup
To enable deployment, you will need to:
- Set up the
NPM_TOKENsecret in GitHub Actions (Settings > Secrets > Actions) - Give
GITHUB_TOKENwrite 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 esbuild for blazing-fast builds but keeps tsc to generate .d.ts files.
Generates a single ESM build.
Commands:
build: runs type checking, then ESM andd.tsfiles in thebuild/directoryclean: removes thebuild/directorytype:dts: only generatesd.tstype:check: only runs type checkingtype:build: only generates ESM
TypeScript Library Starter uses Vitest. Coverage is done through Vitest, using c8.
Commands:
test: runs Vitest test runnertest:watch: runs Vitest test runner in watch modetest:coverage: runs Vitest test runner and generates coverage reports
This template relies on the combination of ESLint — through TypeScript-ESLint for linting, and Prettier for formatting. It also uses cspell to ensure correct spelling.
Commands:
format: runs Prettier with automatic fixingformat:check: runs Prettier without automatic fixing (used in CI)lint: runs ESLint with automatic fixinglint:check: runs ESLint 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 Commitizensemantic-release: triggers a release (used in CI)