{"id":15973745,"url":"https://github.com/rajarakoto/cli-boilerplate","last_synced_at":"2025-10-06T16:01:46.950Z","repository":{"id":224762556,"uuid":"764143598","full_name":"RajaRakoto/cli-boilerplate","owner":"RajaRakoto","description":"Minimalistic boilerplate to quick-start CLI development with Inquirer.js in TypeScript 🚀","archived":false,"fork":false,"pushed_at":"2025-06-17T11:22:04.000Z","size":850,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-22T02:43:02.002Z","etag":null,"topics":["boilerplate","cli","inquirer","inquirerjs","minimalist","starter","template","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RajaRakoto.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-02-27T14:58:34.000Z","updated_at":"2025-07-05T14:17:51.000Z","dependencies_parsed_at":"2024-03-29T15:27:23.432Z","dependency_job_id":"7c33e07f-bfac-47ff-aa52-77858b3140c6","html_url":"https://github.com/RajaRakoto/cli-boilerplate","commit_stats":null,"previous_names":["rajarakoto/cli-boilerplate"],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/RajaRakoto/cli-boilerplate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RajaRakoto%2Fcli-boilerplate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RajaRakoto%2Fcli-boilerplate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RajaRakoto%2Fcli-boilerplate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RajaRakoto%2Fcli-boilerplate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RajaRakoto","download_url":"https://codeload.github.com/RajaRakoto/cli-boilerplate/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RajaRakoto%2Fcli-boilerplate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278638110,"owners_count":26019943,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["boilerplate","cli","inquirer","inquirerjs","minimalist","starter","template","typescript"],"created_at":"2024-10-07T21:06:58.229Z","updated_at":"2025-10-06T16:01:46.917Z","avatar_url":"https://github.com/RajaRakoto.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# cli-boilerplate 🚀\n\n[![forthebadge](https://forthebadge.com/images/badges/built-with-love.svg)](https://forthebadge.com) [![forthebadge](https://forthebadge.com/images/badges/for-you.svg)](https://forthebadge.com) [![forthebadge](https://forthebadge.com/images/badges/open-source.svg)](https://forthebadge.com) [![forthebadge](https://forthebadge.com/images/badges/uses-git.svg)](https://forthebadge.com) [![forthebadge](https://rajarakoto.github.io/github-docs/badge/build-by.svg)](https://forthebadge.com)\n\n![Git](https://img.shields.io/badge/-Git-777?style=flat\u0026logo=git\u0026logoColor=F05032\u0026labelColor=ffffff) ![Gitub](https://img.shields.io/badge/-Gitub-777?style=flat\u0026logo=github\u0026logoColor=777\u0026labelColor=ffffff)\n\n**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.**\n\nInstant Value - All basic tools included and configured:\n\n- 🚀 Typescript \u003e= 5.3\n- 🧅 Bun.js \u003e= 1.0.26\n- 🧅 Use Bun as package manager\n- 🌈 ESM\n- 🧪 Biome for code formatting and linting\n- ✅ Jest or Bun test for fast unit testing and code coverage\n- 📚 Type definitions for Bun.js and Jest\n- ⚙️ EditorConfig for consistent coding style\n- 📦 NPM scripts for common operations\n- 🛠️ Example configuration for GitHub Actions\n- 📝 Simple example of TypeScript code and unit test\n- 🐗 Run tasks with Grunt (example for backup)\n- 🚄 Build faster\n- 🖥️ Ungit for version control (git) with a GUI\n- 🧪 A lightweight private npm proxy registry with Verdaccio, useful for testing your CLI\n- 🔳 Inquirer.js - A collection of common interactive command line user interfaces\n- 🔳 Execa - A process execution library that supports synchronous and asynchronous execution of child processes\n- 🔳 Figlet - A program that generates text banners, in a variety of typefaces, composed of letters made up of conglomerations of smaller ASCII characters\n- 🔳 Node-emoji - A library that provides a simple way to use emojis in your CLI\n- 🔳 Ora - A terminal spinner library that allows you to add a loading spinner to your CLI\n- 🔳 Chalk - A library for styling terminal strings with colors and text styles\n\n---\n\n### 📌 Usage\n\nTo use this template, use the following commands:\n\n```bash\nbun create github.com/RajaRakoto/cli-boilerplate \u003cproject-name\u003e\ncd \u003cproject-name\u003e\nbun run pkg-upgrade # to upgrade outdated dependencies in interactive mode\n```\n\n\u003e 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.\n\n\u003e 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.\n\n\u003e 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, ...).\n\n---\n\n### 📌 Scripts\n\n**Start**\n\n- 📜 `start` - Run your application with bun.\n- 📜 `start:smol` - Run your application with bun and a flag which configures the JavaScriptCore heap size to be smaller and grow slower.\n- 📜 `start:bin` - Run your standalone binary app.\n\n**Clean**\n\n- 📜 `clean` - Remove coverage data, prod, build.\n\n**Development**\n\n- 📜 `dev` - Launch your application in development mode with bun.\n- 📜 `dev:watch` - Interactive watch mode to automatically transpile source files with bun in development.\n- 📜 `dev:hot` - Hot reloading of source files with bun in development.\n- 📜 `dev:smol:watch` - Interactive watch mode to automatically transpile source files with bun in development, while using --smol flag.\n- 📜 `dev:smol:hot` - Hot reloading source files with bun in development, while using --smol flag.\n\n**Build**\n\n- 📜 `build` - Transpile and bundle source files with bun.\n- 📜 `build:watch` - Interactive watch mode to automatically transpile source files with bun.\n- 📜 `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.\n\n**Testing**\n\n- 📜 `test` - Run bun test.\n- 📜 `test:watch` - Interactive watch mode to automatically re-run tests with bun.\n\n**Linting and Formatting**\n\n- 📜 `biome:start` - Starts the Biome daemon server. You can specify a custom configuration file path using the `--config-path` option.\n- 📜 `biome:stop` - Stops the Biome daemon server.\n- 📜 `biome:fix` - Runs a source code check and applies automatic fixes (linter \u0026 formatter) according to the defined rules.\n- 📜 `biome:unsafe` - Works like `biome:fix`, but may apply more invasive or risky changes.\n\n**Backup and Dependency Management**\n\n- 📜 `backup` - Backup files with Grunt.\n- 📜 `pkg-check` - Check useless dependencies with depcheck.\n- 📜 `pkg-upgrade` - Upgrade outdated dependencies (interactive mode) with npm-check-updates.\n\n**Versioning**\n\n- 📜 `versioning` - Start ungit server.\n\n**NPM Commands**\n\n- 📜 `npm-version:major` - Increments the major version number of your project using npm.\n- 📜 `npm-version:minor` - Increments the minor version number of your project using npm.\n- 📜 `npm-version:patch` - Increments the version patch number of your project using npm.\n- 📜 `npm-login` - Login to a registry user account.\n- 📜 `npm-publish` - Publish your npm package with public access.\n- 📜 `npm-unpublish` - Forcefully unpublish the cli package from npm.\n- 📜 `npm-reset:registry` - Delete the custom npm registry.\n- 📜 `npm-check:registry` - Get the currently configured registry for npm.\n- 📜 `npm-proxy-set:registry` - Set the npm registry to use a local proxy.\n- 📜 `npm-proxy:start` - Start a Verdaccio server with a local npm proxy.\n- 📜 `npm-proxy:publish` - Publish your npm package via the local proxy.\n- 📜 `npm-proxy:unpublish` - Forcefully unpublish the cli package from the npm registry via the local proxy.\n- 📜 `npm-proxy:republish` - Republish your npm package by first unpublishing it and then publishing it again via the local proxy.\n\n**NVM**\n\n- 📜 `nvm` - Manage multiple node.js versions. Easily switch between node versions per project to ensure compatibility.\n\n---\n\n### 📌 Build\n\nWhen 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.\n\n---\n\n### 📌 Similar\n\nYou can also check out my other starter projects:\n\n- 🚀 [node-boilerplate](https://github.com/RajaRakoto/node-boilerplate)\n- 🚀 [react-boilerplate](https://github.com/RajaRakoto/react-boilerplate)\n- 🚀 [next-boilerplate](https://github.com/RajaRakoto/next-boilerplate)\n- 🚀 [qwik-boilerplate](https://github.com/RajaRakoto/qwik-boilerplate)\n- 🚀 [vscode-boilerplate](https://github.com/RajaRakoto/vscode-boilerplate)\n- 🚀 [bun-boilerplate](https://github.com/RajaRakoto/bun-boilerplate)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frajarakoto%2Fcli-boilerplate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frajarakoto%2Fcli-boilerplate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frajarakoto%2Fcli-boilerplate/lists"}