yehle
v0.2.1
Published
An opinionated scaffolding CLI for the modern developer
Readme
yehle is a CLI tool for scaffolding modern software projects by performing common yak-shaving operations through opinionated templates, sensible tooling setup, and development best practices.
I would usually spend hours re-configuring the "same old tooling and workflow setup" for every new project instead of focusing on the actual functionality. yehle eliminates that duplicative work by generating a project structure (based on my personal flavour) with essential pieces already configured (pre-commit hooks, a linter and formatter, build and release workflows, basic documentation, etc.) - thus allowing me to build things I'm interested in without the distractions.
Table of Contents
Features
yehle sets you up with several best practices adopted in modern software development with pre-configured tooling that should cover most use-cases. yehle achieves this through:
- Automatic dependency upgrades using dependabot
- Automatic builds, tests, and releases with github actions
- Automatically generated Readme with badges through shields.io
- Automatically generated MIT license with spdx
- Automatically generated community files (contribution guidelines, issue templates, and pull request checklists)
- A pre-configured release process for preview and production releases
- Opinionated templates that cover common use cases encountered in modern software development
Supported Languages
In addition to the general features listed above, yehle also configures language-specific tooling to enable unit testing, type-safety, consistent code linting/formatting, and much more. It currently supports the following languages:
Typescript
- Unit testing with vitest and test quality checks using stryker
- Commit linting with commitlint
- Pre-commit checks with husky
- Pre-configured package bundling using tsdown
- Fast and disk-efficient dependency management using pnpm
- Type-safety using typescript
- Rapid utility-first styling and theme management using tailwindcss
- Code linting and formatting with biome
- Automated changelog generation using git-cliff
- Tag-driven releases with version management and package publishing to npm
[!NOTE] Support for other languages is still in the works
Usage
Requirements
Quickstart
The easiest way to start is to call the CLI through npx to generate a new project from one of the provided templates:
npx yehle <resource>[!IMPORTANT] Some workflows in the generated projects may require repository secrets to be set in the GitHub project (Settings → Secrets and variables → Actions). Additionally, ensure that "Allow GitHub Actions to create and approve pull requests" is checked in Settings → Actions → General. Make sure to set them to prevent github action failures before releasing your code out in the world.
yehle uses a simple tag-driven release workflow for stress-free delivery (This same workflow is configured for projects generated with yehle). See the release process section in CONTRIBUTING.md for details.
Examples
Create a public NPM package
npx yehle package \
--name my-package \
--lang typescript \
--template default \
--publicCreate a private internal Typescript library
npx yehle package \
--name internal-utils \
--lang typescript \
--template defaultCommands Reference
package
Generate a new package for one of the supported languages with sensible defaults, development best practices, and release workflows.
If you're new to yehle, I would recommend using the interactive CLI for a guided experience.
npx yehle packageOnce you're acquainted, you can skip through most prompts by providing the values through the CLI flags directly.
npx yehle package \
--name my-lib \
--lang typescript \
--template default \
--publicSupported Flags
--name <project-name>: Name of the package--lang <language>: Programming language that the package is built for (for example,typescript).--template <template-name>: The starter template for this package (for example,default,react, etc.)--public: Whether the package should be optimised for publishing and contributions (sets up public registry configuration, release workflows, and community files for open-source collaboration).
Contributing
Please read CONTRIBUTING.md for details on how to report issues, propose changes, and submit pull requests.
If you create a project with yehle, you can show support by adding this badge to your README:
<a href="https://github.com/agrawal-rohit/yehle"><img alt="Made with Yehle" src="https://img.shields.io/badge/made_with-yehle-FEA624"></a>