https://github.com/pyyupsk/npm-ts-template
Zero-config TypeScript library template with Bun, tsdown, Biome, Vitest, and automated releases via Changesets
https://github.com/pyyupsk/npm-ts-template
biome bun changesets library npm template typescript vitest
Last synced: 5 days ago
JSON representation
Zero-config TypeScript library template with Bun, tsdown, Biome, Vitest, and automated releases via Changesets
- Host: GitHub
- URL: https://github.com/pyyupsk/npm-ts-template
- Owner: pyyupsk
- License: mit
- Created: 2026-01-05T02:56:30.000Z (21 days ago)
- Default Branch: main
- Last Pushed: 2026-01-07T06:23:28.000Z (19 days ago)
- Last Synced: 2026-01-13T19:59:16.519Z (13 days ago)
- Topics: biome, bun, changesets, library, npm, template, typescript, vitest
- Language: TypeScript
- Homepage: https://pyyupsk.github.io/npm-ts-template/
- Size: 383 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# npm-ts-template
[](https://github.com/pyyupsk/npm-ts-template/actions/workflows/ci.yml)
[](https://www.npmjs.com/package/@pyyupsk/npm-ts-template)
[](https://opensource.org/licenses/MIT)
Zero-config TypeScript library template with Bun, tsdown, Prettier, ESLint, Vitest, and git-cliff.
## Features
- **TypeScript 5.x** with `@tsconfig/strictest` for 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
1. Click **[Use this template](https://github.com/pyyupsk/npm-ts-template/generate)** to create your repository
2. Clone and install:
```bash
git clone https://github.com/YOUR_USERNAME/YOUR_REPO.git
cd YOUR_REPO
bun install
```
3. Configure repository settings:
```bash
./scripts/setup-repo.sh
```
4. Add required secrets in GitHub Settings → Secrets → Actions:
- `NPM_TOKEN` - npm automation token
- `GH_PAT` - Personal access token with `repo` scope
5. Update `package.json` with your package details and start coding in `src/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 configuration
```
## Releasing
Releases are triggered manually via GitHub Actions:
1. Go to **Actions** → **Release**
2. Click **Run workflow**
3. Select version type (`patch`, `minor`, `major`)
The workflow automatically:
- Bumps version in `package.json`
- Generates `CHANGELOG.md` with git-cliff
- Publishes to npm with provenance
- Creates GitHub release
## Documentation
📚 **[View Full Documentation](https://pyyupsk.github.io/npm-ts-template/)**
## Prerequisites
- [Bun](https://bun.sh/) (latest)
- [Node.js](https://nodejs.org/) >= 20
- [GitHub CLI](https://cli.github.com/) (for setup script)
## License
This project is licensed under the [MIT License](LICENSE) - free for personal and commercial use.
Copyright © 2026 [pyyupsk](https://github.com/pyyupsk)