Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/kamdz/dx

An opinionated developer experience (DX) template for TypeScript projects to ensure consistency across multiple projects.
https://github.com/kamdz/dx

boilerplate conventional-commits developer-experience eslint jest prettier semantic-release template typescript

Last synced: 3 months ago
JSON representation

An opinionated developer experience (DX) template for TypeScript projects to ensure consistency across multiple projects.

Awesome Lists containing this project

README

        

# @kamdz/dx

**@kamdz/dx** is an opinionated developer experience (DX) template designed to set up TypeScript projects with best practices baked in. It comes pre-configured with tools for streamlined development, including building, linting, formatting, testing, and CI/CD. Every file and configuration included in this project acts as a blueprint for other projects.

🚀 **Quick start:**

```bash
npx @kamdz/dx
# or
npx @kamdz/dx [path]
```

## ✨ Features

- **TypeScript** for static typing, with **tsup** & **tsx** for builds and development
- **ESLint 9** for code linting and quality checks
- **Prettier** for consistent code formatting
- **Husky** & **lint-staged** for Git hooks to ensure code quality
- **Commitlint** & **Commitizen** for conventional commit messages
- **Semantic Release** for automated versioning and changelogs
- **Jest** for unit testing with coverage
- **GitHub Actions** for CI/CD

## 📜 Available Commands

- `yarn build`: Bundle your code to ES Module and CommonJS with **tsup**
- `yarn cli`: Run the custom CLI in `bin/cli.ts`
- `yarn commit`: Use **commitizen** for conventional commits
- `yarn dev`: Start development mode with **tsx**
- `yarn dx`: Update your project with the latest **@kamdz/dx**
- `yarn format`: Format code with **Prettier**
- `yarn lint`: Lint and auto-fix issues with **ESLint**
- `yarn start`: Run the project with **tsx**
- `yarn test`: Run tests with **Jest** with coverage
- `yarn type-check`: Type-check your project using **TypeScript**

## 🤔 Why?

While monorepos with shared configs (ESLint, Prettier, TypeScript) are helpful, they still involve setting up boilerplate files for every project. **@kamdz/dx** simplifies this by providing a template repository. You can modify rules or tools, and propagate those changes to all your projects with a single command, ensuring a consistent developer experience across them.

## 🔧 Customization

To create your own `@user/dx`, fork this repository, modify whatever you need (except for the `bin` and `src` directories), and update the `name`, `bugs`, `repository`, `author`, `scripts.dx` in `package.json`. Done!

If you enjoy this project, please ⭐️ it!