Skip to content

A tiny, type-safe and flexible framework to build powerful CLI apps

License

Notifications You must be signed in to change notification settings

eegli/tinyparse

Repository files navigation

Tinyparse

npm GitHub Workflow Status (branch) codecov npm bundle size (scoped)

A tiny, type-safe and flexible utility for creating command line tools in Node.js

What it is

Like oclif and Yargs had a baby.

import { Parser } from '@eegli/tinyparse';

new Parser()
  .option('occasion', {
    longFlag: '--occasion',
    shortFlag: '-o',
    defaultValue: '',
    required: true,
  })
  .subcommand('congratulate', {
    args: ['name'] as const,
    handler: ({ args, options }) => {
      const [name] = args;
      const { occasion } = options;
      console.log(`Happy ${occasion}, ${name}!`);
    },
  })
  .defaultHandler(() => {
    console.log('Please enter your name');
  })
  .parse(['congratulate', 'John', '--occasion', 'birthday'])
  .call();

// Happy birthday, John!

I use this mostly for other pet projects of mine so it comes with some opinions 🤪.

Features

  • TypeScript first - 100% type-safety
  • Supports subcommands and flag options
  • Async API
  • Lightweight - Zero dependencies
  • Mega customizable

Examples

Resources

This project has been guided by the amazing Command Line Interface Guidelines by Aanand Prasad, Ben Firshman, Carl Tashian and Eva Parish.

Further inspiration has been taken from the Apache Commons CLI.