3.1.9 • Published 9 months ago

noarg v3.1.9

Weekly downloads
-
License
-
Repository
github
Last release
9 months ago

NoArg - CLI Argument Parser

Introduction

noarg is a lightweight Node.js package designed to simplify command-line argument parsing for CLI applications. With noarg, you can effortlessly define and parse command-line arguments and options, making it easier to build robust and user-friendly command-line interfaces.

Features

  • Fully type safe.
  • Suitable for both commonjs and esm.
  • Supports nested commands with individual configurations.
  • Handles required, optional, and list arguments with ease.
  • Provides robust error handling with descriptive messages.
  • Works seamlessly with child programs, enabling modular CLI design.
  • Configurable default values and prompts for missing arguments.
  • Automatically generates help and usage documentation.
  • Supports disabling and enabling CLI colors.

Command Structure

app (program) <required arguments> <optional arguments> ...<list arguments> [options] [ignored arguments]

Auto Help and Usages creation

image

image

Getting Started

Installation

To install noarg package, you can use npm:

npm install noarg

Importing the Package

You can import noarg into your Node.js application as follows:

import NoArg, { t } from 'noarg'

Creating a Command

You can create a command with noarg.create() method. Each command can have its own set of options, arguments, and configurations.

const app = NoArg.create(commandName, commandConfig).on(commandHandler)
  • commandName: Name of the command.
  • commandConfig: Configuration object for the command.
  • commandHandler: Function to handle the command execution.

Example

import NoArg from 'noarg'

const app = NoArg.create('app', {
  description: 'This is a test program',
  flags: {
    config: NoArg.string().ask('Where is the config?'),
  },
  arguments: [
    { name: 'arg-1', type: NoArg.number() },
    { name: 'arg-2', type: NoArg.boolean() },
    { name: 'arg-3', type: NoArg.string() },
  ],
  optionalArguments: [
    { name: 'arg-4', type: NoArg.string() },
    { name: 'arg-5', type: NoArg.boolean() },
  ],
  listArgument: {
    name: 'args',
    type: NoArg.string(),
    minLength: 1,
    maxLength: 3,
  },
  trailingArguments: '--',
  config: {},
  system: {},
}).on(([arg1, arg2, arg3, optArg4, optArg5, listArg, trailingArgs], flags) => {
  console.log({ arg1, arg2, arg3, optArg4, optArg5, listArg, trailingArgs })
  console.log(flags)
})

Example: Command Structure

node app.js arg-1 arg-2 arg-3 optional-arg-1 listArg-1 listArg-2 --config config.json

Types

  • NoArg.string(): Defines an option of type string.
  • NoArg.number(): Defines an option of type number.
  • NoArg.boolean(): Defines an option of type boolean.
  • NoArg.array(): Defines an option of type array. (Only available for options)
  • NoArg.tuple(): Defines an option of type tuple. (Only available for options)

Use common config

import NoArg from 'noarg'

const app = NoArg.create('app', {})

const listArguments = {
  name: 'list',
  type: NoArg.boolean(),
} as const

const config = NoArg.defineConfig({
  arguments: [{ name: 'arg1', type: NoArg.string() }],
  optionalArguments: [{ name: 'optArg1', type: NoArg.string() }],
  flags: { hobbies: NoArg.array(NoArg.string()) },
  listArguments,
})

app.create('dev', config)
app.create('build', config)

Disable cli colors

import NoArg from 'noarg'

NoArg.colors.enable()
NoArg.colors.disable()

// By default it's enabled

Tips

  • Help option is automatically available.
  • Another awesome feature is that it shows how to use this CLI and its structure, which can be seen using the --help-usage flag.

Example

node app.js --help
node app.js --help-usage

Conclusion

noarg simplifies the process of parsing command-line arguments for Node.js applications. With its intuitive API and powerful features, you can easily build CLI applications with robust argument handling.

3.1.9

9 months ago

3.1.8

12 months ago

3.1.3

1 year ago

3.1.2

1 year ago

3.1.1

1 year ago

3.1.7

12 months ago

3.1.6

1 year ago

3.1.5

1 year ago

3.1.4

1 year ago

3.0.21

1 year ago

3.0.22

1 year ago

3.0.20

1 year ago

1.0.3

1 year ago

3.0.18

1 year ago

3.0.19

1 year ago

3.0.9

1 year ago

2.0.0

1 year ago

3.0.12

1 year ago

3.0.4

1 year ago

3.0.13

1 year ago

3.0.3

1 year ago

3.0.10

1 year ago

3.0.2

1 year ago

3.1.0

1 year ago

3.0.11

1 year ago

3.0.1

1 year ago

3.0.16

1 year ago

3.0.8

1 year ago

3.0.17

1 year ago

3.0.7

1 year ago

3.0.14

1 year ago

3.0.6

1 year ago

3.0.15

1 year ago

3.0.5

1 year ago

3.0.0

1 year ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago

0.0.12

2 years ago

0.0.11

2 years ago

0.0.10

2 years ago

0.0.9

2 years ago

0.0.8

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago

0.0.0

2 years ago