nodejs-smart-libraries

stmux

https://www.npmjs.com/package/stmux

Simple Terminal Multiplexing for Node Environments

This utility is primarily intended to be used from within a package.json script to easily side-by-side run various NPM-based commands in a Node.js build-time environment.

blessed、blessed-contrib

https://www.npmjs.com/package/blessed
https://www.npmjs.com/package/blessed-contrib

A curses-like library with a high level terminal interface API for node.js.

shimmer

https://www.npmjs.com/package/shimmer

shimmer does a bunch of the work necessary to wrap other methods in a wrapper you provide.

v8-profiler-next

https://www.npmjs.com/package/v8-profiler-next

v8-profiler-next provides node bindings for the v8 profiler.

heapdump

https://www.npmjs.com/package/heapdump

Make a dump of the V8 heap for later inspection.

yargs

https://github.com/yargs/yargs

Yargs helps you build interactive command line tools, by parsing arguments and generating an elegant user interface.

# tsnd src/index.ts add --title 'title-A' --body 'body-A' 

import yargs, { Arguments, Argv, CommandModule } from 'yargs'
import { hideBin } from "yargs/helpers";


console.log(process.argv)

type PrepareArgs = { title: string, body: string }
class ABC implements CommandModule<{}, PrepareArgs>{
    constructor(
      public command = "add", 
      public describe = "Add a new note"){
    }
    builder(argv: Argv<{}>): Argv<PrepareArgs>{
        return argv
      .option("title", {
        desc: "name prefix",
        type: "string",
        demandOption: true,
      })
      .option("body", {
        desc: "directory containing video files",
        type: "string",
        demandOption: true,
      });
    }
    async handler(args: Arguments<PrepareArgs>){
        console.log(args.title, args.body)
    }
}    

// Create add command 
yargs(hideBin(process.argv))    // 删除 process.argv 包含的头两个字段: /bin/node, filePath
    .scriptName("yargs-test")
    .command(new ABC() as any)
    .command(new XXX() as any)  // XXX is another command
    .parseAsync();