@pyyupsk/npm-ts-template
v0.2.1
Published
A TypeScript library template with modern tooling
Maintainers
Readme
npm-ts-template
Zero-config TypeScript library template with Bun, tsdown, Prettier, ESLint, Vitest, and git-cliff.
Features
- TypeScript 5.x with
@tsconfig/strictestfor maximum type safety - Dual ESM/CJS output via tsdown with automatic type declarations
- Prettier for consistent code formatting
- ESLint with SonarJS, JSDoc enforcement, and import sorting
- Vitest for fast testing with v8 coverage (80% threshold)
- Lefthook for pre-commit hooks (lint + typecheck)
- git-cliff for automated changelog generation
- GitHub Actions for CI/CD with manual release workflow
- VitePress documentation site
Quick Start
Click Use this template to create your repository
Clone and install:
git clone https://github.com/YOUR_USERNAME/YOUR_REPO.git cd YOUR_REPO bun installConfigure repository settings:
./scripts/setup-repo.shAdd required secrets in GitHub Settings → Secrets → Actions:
NPM_TOKEN- npm automation tokenGH_PAT- Personal access token withreposcope
Update
package.jsonwith your package details and start coding insrc/index.ts
Scripts
| Script | Description |
| ----------------------- | --------------------------------- |
| bun run build | Build ESM/CJS bundles to dist/ |
| bun run dev | Build in watch mode |
| bun run test | Run tests |
| bun run test:coverage | Run tests with coverage report |
| bun run lint | Check code quality with ESLint |
| bun run lint:fix | Auto-fix linting issues |
| bun run format | Format code with Prettier |
| bun run typecheck | TypeScript type checking |
| bun run knip | Find unused code and dependencies |
| bun run docs:dev | Start documentation dev server |
Project Structure
├── src/ # Source code
│ └── index.ts # Library entry point
├── tests/ # Test files
├── docs/ # VitePress documentation
├── scripts/ # Utility scripts
│ └── setup-repo.sh # Repository configuration script
├── .github/
│ ├── workflows/ # CI/CD workflows
│ └── dependabot.yml # Dependency updates
├── eslint.config.ts # ESLint configuration
├── tsconfig.json # TypeScript configuration
├── tsdown.config.ts # Build configuration
└── cliff.toml # Changelog configurationReleasing
Releases are triggered manually via GitHub Actions:
- Go to Actions → Release
- Click Run workflow
- Select version type (
patch,minor,major)
The workflow automatically:
- Bumps version in
package.json - Generates
CHANGELOG.mdwith git-cliff - Publishes to npm with provenance
- Creates GitHub release
Documentation
Prerequisites
- Bun (latest)
- Node.js >= 20
- GitHub CLI (for setup script)
License
This project is licensed under the MIT License - free for personal and commercial use.
Copyright © 2026 pyyupsk
