npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@basd/cli

v0.0.3

Published

A comprehensive Node.js module providing a set of tools for creating elegant command line interfaces by wrapping several popular CLI tools into one cohesive package.

Downloads

28

Readme

@basd/cli

take command

npm pipeline license downloads

Gitlab Github Twitter Discord

A comprehensive Node.js module providing a set of tools for creating elegant command line interfaces by wrapping several popular CLI tools into one cohesive package. This project simplifies CLI development by combining functionality from various libraries, including command parsing, user interaction, and system command execution.

Features

  • Commander Integration: Leverages commander for powerful command-line interfaces.
  • Progress and Spinner: Includes @basd/spinner, a mix of cli-spinner and cli-progress for interactive CLI feedback.
  • CLI Utilities: Offers utilities from basd (a lodash wrapper), shelljs for shell commands, prompts for interactive user inputs, and cli-color for colorful CLI output.

Installation

Install @basd/cli using npm:

npm install @basd/cli

Usage

The @basd/cli module is designed to be intuitive for developers familiar with Node.js CLI development. Here's some examples to get you started:

Commander

The commander module in @basd/cli is used for building command-line interfaces with support for commands, options, and sub-commands.

const { program } = require('@basd/cli')

// Define a new command with options
program
  .command('serve [port]')
  .description('Start the server')
  .option('-d, --debug', 'output extra debugging')
  .action((port, options) => {
    const portNumber = port || 3000
    console.log(`Server running on port ${portNumber}`)
    if (options.debug) console.log('Debugging mode is on')
  })

// Parse command-line arguments
program.parse(process.argv)

ShellJS

ShellJS is integrated for executing shell commands in a Unix shell-style, but within your Node.js scripts.

const { shell } = require('@basd/cli')

// Execute a simple UNIX command
shell.exec('echo hello world')

// Use it in a more complex scenario
if (shell.exec('git status').code !== 0) {
  shell.exit(1)
}

Prompts

The prompts module is excellent for creating interactive command-line prompts.

const cli = require('@basd/cli')

async function askName() {
  const response = await cli.prompts({
    type: 'text',
    name: 'name',
    message: 'What is your name?'
  })

  console.log(`Hello, ${response.name}!`)
}

askName()

Progress and Spinner

Progress and Spinner from @basd/spinner provide visual feedback for CLI applications.

Spinners

const { Spinner } = require('@basd/spinner')

const spinner = new Spinner({
  id: 'unique-spinner-id', // optional
  color: 'green', // optional
  spinner: 'dots' // optional, spinner style
})

spinner.start('Loading...')
// Update the spinner
spinner.update('Still loading...')
// Complete the spinner
spinner.succeed('Completed!')

Progress Bars

const { Progress } = require('@basd/spinner')

const progressBar = new Progress({
  total: 100, // total value of the progress bar
  preset: 'shades_classic' // optional, style of the progress bar
})

progressBar.start(0)
// Increment the progress
progressBar.increment(10)
// Update the progress bar to a specific value
progressBar.update(50)
// Complete the progress
progressBar.stop()

Colors

const { colors } = require('@basd/cli')

console.log(colors.red('This is a red text'))

Documentation

  • API Reference: Based on jsdoc comments.
  • commander: Interface for defining commands and options.
  • Progress & Spinner: Utilities for displaying progress bars and spinners.
  • prompts: For creating interactive command-line prompts.
  • colors: Enhance your CLI output with colored text.
  • shell: Execute shell commands within your Node.js application.

Tests

In order to run the test suite, simply clone the repository and install its dependencies:

git clone https://github.com/basedwon/cli.git
cd cli
npm install

To run the tests:

npm test

Contributing

Thank you! Please see our contributing guidelines for details.

Donations

If you find this project useful and want to help support further development, please send us some coin. We greatly appreciate any and all contributions. Thank you!

Bitcoin (BTC):

1JUb1yNFH6wjGekRUW6Dfgyg4J4h6wKKdF

Monero (XMR):

46uV2fMZT3EWkBrGUgszJCcbqFqEvqrB4bZBJwsbx7yA8e2WBakXzJSUK8aqT4GoqERzbg4oKT2SiPeCgjzVH6VpSQ5y7KQ

License

@basd/cli is MIT licensed.