basic-args
TypeScript icon, indicating that this package has built-in type declarations

1.5.0 • Public • Published

basic-args

NPM version Build Status Discord Try it on gitpod

Basic argument parsing library using yargs-parser with built-in help screen

Features

  • Flagged arguments (e.g., --version) with types, descriptions, aliases, and defaults.
  • Positional arguments
  • Help screen: Automatically generated with positionals, options, and user-defined usage examples.
  • Extraneous arguments are stored in the _ property unless errorOnExtra is true.
  • Validation: Optional validate hook to check yargs parsed arguments before returning.
  • Preprocessing: Optional preprocess hook to modify raw arguments before parsing.

Installation

npm install basic-args

Usage

See index.d.ts for the full API.

CommonJS Import

const args = require('basic-args')({
  name: 'basic-args-example',
  version: '1.0.0',
  description: 'A basic example of basic-args',
  options: {
    version: { type: String, description: 'Version to connect as', alias: 'v' },
    port: { type: Number, description: 'Port to listen on', default: 25565 },
    online: { type: Boolean, description: 'Whether to run in online mode' },
    path: { type: String, description: 'Path to the server directory', default: '.' }
  },
  positionals: [
    { name: 'input', type: String, description: 'Input file path' },
    { name: 'output', type: String, description: 'Output file path' }
  ],
  examples: [
    'basic-args-example <inputFile> <outputFile> [--version str]',
    'basic-args-example input.txt output.txt --version 1.16         Start server with version 1.16'
  ]
})

console.log(args)

Running the above with basic-args-example input.txt output.txt --version 1.16 (or using -v 1.16) yields:

{ input: 'input.txt', output: 'output.txt', version: '1.16', port: 25565, online: false, path: '.' }

Help Screen

Running with --help (or the configured helpCommand) displays the help screen:

basic-args-example - v1.0.0
A basic example of basic-args

Positionals:
  input     Input file path
  output    Output file path

Options:
  --version, -v Version to connect as
  --port        Port to listen on  (default: 25565)
  --online      Whether to run in online mode
  --path        Path to the server directory  (default: .)

Usage:
  basic-args-example input.txt output.txt --version 1.16  Start server with version 1.16
  basic-args-example input.txt output.txt --version 1.16         Start server with version 1.16

Configuration

  • name: Program name (shown in help).
  • version: Program version (shown in help).
  • description: Program description (shown in help).
  • options: Object mapping option names to { type, description, alias?, default? }.
  • positionals: Array of { name, type, description? } for required positional arguments.
  • examples: Array of strings for usage examples in the help screen.
  • errorOnExtra: If true, errors on unrecognized options (default: false).
  • throwOnError: If true, throws errors instead of exiting (default: false).
  • helpCommand: Command to trigger help screen (default: help).
  • preprocess: Function to preprocess raw arguments.
  • validate: Function to validate parsed arguments.

Notes

  • Positional arguments are required and must match the order and number defined in positionals.
  • Extra positional arguments are stored in _ unless errorOnExtra is true.
  • Boolean options don’t accept values (e.g., --online is true, not --online true). Use String type for custom handling.
  • Use the second argument to pass custom args instead of process.argv:
require('basic-args')(options, ['--version', '1.16'])

ES6 Import

import basicArg from 'basic-args'
const args = basicArg({
  name: 'basic-args-example',
  version: '1.0.0',
  description: 'A basic example of basic-args',
  throwOnError: false,
  helpCommand: 'help',
  options: {
    version: { type: String, description: 'Version to connect as', alias: 'v' },
    port: { type: Number, description: 'Port to listen on', default: 25565 },
    online: { type: Boolean, description: 'Whether to run in online mode' },
    path: { type: String, description: 'Path to the server directory', default: '.' }
  },
  positionals: [
    { name: 'input', type: String, description: 'Input file path' },
    { name: 'output', type: String, description: 'Output file path' }
  ],
  examples: [
    'basic-args-example input.txt output.txt --version 1.16  Start server with version 1.16',
    'basic-args-example input.txt output.txt --port 8080      Start server on port 8080',
    'basic-args-example input.txt output.txt --online        Start server in online mode'
  ]
})

Testing

npm test

History

See history

Package Sidebar

Install

npm i basic-args

Weekly Downloads

179

Version

1.5.0

License

MIT

Unpacked Size

19.2 kB

Total Files

10

Last publish

Collaborators

  • extremeheat