Skip to content
/ cli-boilerplate Public template

Minimalistic boilerplate to quick-start CLI development with Inquirer.js in TypeScript πŸš€

License

Notifications You must be signed in to change notification settings

RajaRakoto/cli-boilerplate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

85 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

cli-boilerplate πŸš€

forthebadge forthebadge forthebadge forthebadge forthebadge

Git Gitub

Developer Ready: A versatile template designed to jumpstart CLI development in TypeScript - Engineered to seamlessly integrate with various CLI projects, ensuring smooth compatibility with a pre-configured environment

Instant Value - All basic tools included and configured:

  • πŸš€ Typescript >= 5.3
  • πŸ§… Bun.js >= 1.0.26
  • πŸ§… Use Bun as package manager
  • 🌈 ESM
  • πŸ§ͺ Biome for code formatting and linting
  • βœ… Jest or Bun test for fast unit testing and code coverage
  • πŸ“š Type definitions for Bun.js and Jest
  • βš™οΈ EditorConfig for consistent coding style
  • πŸ“¦ NPM scripts for common operations
  • πŸ› οΈ Example configuration for GitHub Actions
  • πŸ“ Simple example of TypeScript code and unit test
  • πŸ— Run tasks with Grunt (example for backup)
  • πŸš„ Build faster
  • πŸ–₯️ Ungit for version control (git) with a GUI
  • πŸ§ͺ A lightweight private npm proxy registry with Verdaccio, useful for testing your CLI
  • πŸ”³ Inquirer.js - A collection of common interactive command line user interfaces
  • πŸ”³ Execa - A process execution library that supports synchronous and asynchronous execution of child processes
  • πŸ”³ Figlet - A program that generates text banners, in a variety of typefaces, composed of letters made up of conglomerations of smaller ASCII characters
  • πŸ”³ Node-emoji - A library that provides a simple way to use emojis in your CLI
  • πŸ”³ Ora - A terminal spinner library that allows you to add a loading spinner to your CLI
  • πŸ”³ Chalk - A library for styling terminal strings with colors and text styles

πŸ“Œ Usage

To use this template, use the following commands:

bun create github.com/RajaRakoto/cli-boilerplate <project-name>
cd <project-name>
bun run pkg-upgrade # to upgrade outdated dependencies in interactive mode

NOTE 1: I employ the MIT license for this starter kit, which includes my name and GitHub profile. Please remember to adjust or remove it if deemed unnecessary.

NOTE 2: In order to help you better understand the structure of this boilerplate, there is a README.md file in each subdirectory of src.

NOTE 3: For certain configurations in the package.json file, you need to modify them to tailor them to your project (e.g: name, description, author, keywords, main, repository, ...).


πŸ“Œ NPM Scripts

Start

  • πŸ“œ start - Run your application with bun.
  • πŸ“œ start:smol - Run your application with bun and a flag which configures the JavaScriptCore heap size to be smaller and grow slower.
  • πŸ“œ start:bin - Run your standalone binary app.

Clean

  • πŸ“œ clean - Remove coverage data, prod, build.

Development

  • πŸ“œ dev - Launch your application in development mode with bun.
  • πŸ“œ dev:watch - Interactive watch mode to automatically transpile source files with bun in development.
  • πŸ“œ dev:hot - Hot reloading of source files with bun in development.
  • πŸ“œ dev:smol:watch - Interactive watch mode to automatically transpile source files with bun in development, while using --smol flag.
  • πŸ“œ dev:smol:hot - Hot reloading source files with bun in development, while using --smol flag.

Build

  • πŸ“œ build - Transpile and bundle source files with bun.
  • πŸ“œ build:watch - Interactive watch mode to automatically transpile source files with bun.
  • πŸ“œ build:bin - bun's bundler implements a --compile flag for generating a standalone binary from a TypeScript or JavaScript file, use this in your production environment to ensure optimal execution of your app.

Testing

  • πŸ“œ test - Run bun test.
  • πŸ“œ test:watch - Interactive watch mode to automatically re-run tests with bun.

Linting and Formatting

  • πŸ“œ biome:start - Starts the Biome daemon server. You can specify a custom configuration file path using the --config-path option.
  • πŸ“œ biome:stop - Stops the Biome daemon server.
  • πŸ“œ biome:fix - Runs a source code check and applies automatic fixes (linter & formatter) according to the defined rules.
  • πŸ“œ biome:unsafe - Works like biome:fix, but may apply more invasive or risky changes.

Backup and Dependency Management

  • πŸ“œ backup - Backup files with Grunt.
  • πŸ“œ pkg-check - Check useless dependencies with depcheck.
  • πŸ“œ pkg-upgrade - Upgrade outdated dependencies (interactive mode) with npm-check-updates.

Versioning

  • πŸ“œ versioning - Start ungit server.

NPM Commands

  • πŸ“œ npm-version:major - Increments the major version number of your project using npm.
  • πŸ“œ npm-version:minor - Increments the minor version number of your project using npm.
  • πŸ“œ npm-version:patch - Increments the version patch number of your project using npm.
  • πŸ“œ npm-login - Login to a registry user account.
  • πŸ“œ npm-publish - Publish your npm package with public access.
  • πŸ“œ npm-unpublish - Forcefully unpublish the cli package from npm.
  • πŸ“œ npm-reset:registry - Delete the custom npm registry.
  • πŸ“œ npm-check:registry - Get the currently configured registry for npm.
  • πŸ“œ npm-proxy-set:registry - Set the npm registry to use a local proxy.
  • πŸ“œ npm-proxy:start - Start a Verdaccio server with a local npm proxy.
  • πŸ“œ npm-proxy:publish - Publish your npm package via the local proxy.
  • πŸ“œ npm-proxy:unpublish - Forcefully unpublish the cli package from the npm registry via the local proxy.
  • πŸ“œ npm-proxy:republish - Republish your npm package by first unpublishing it and then publishing it again via the local proxy.

NVM

  • πŸ“œ nvm - Manage multiple node.js versions. Easily switch between node versions per project to ensure compatibility.

πŸ“Œ Build

When using the build.js file in this boilerplate, it's important to note the significance of the target option. By default, if the target option is not specified in the build.js file, it will be set to browser. However, for projects utilizing the bun.js runtime environment, it's imperative to explicitly set the target to bun. This guarantees compatibility with the bun shell environment and prevents unexpected behavior. Furthermore, it's noteworthy that the target supports three possible values: browser, bun, and node, providing flexibility in defining the build target according to specific project requirements.


πŸ“Œ Similar

You can also check out my other starter projects:

About

Minimalistic boilerplate to quick-start CLI development with Inquirer.js in TypeScript πŸš€

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published