or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

configuration.mdcore-parsing.mddetailed-parsing.mdindex.mdparser-options.mdstring-utilities.mdtokenize-arg-string.md
tile.json

tessl/npm-yargs-parser

The mighty option parser used by yargs for parsing command-line arguments with extensive configuration options.

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/yargs-parser@22.0.x

To install, run

npx @tessl/cli install tessl/npm-yargs-parser@22.0.0

index.mddocs/

yargs-parser

yargs-parser is the mighty option parser used by yargs for parsing command-line arguments. It provides comprehensive argument parsing capabilities with extensive configuration options, supporting various data types, complex option configurations, and advanced parsing features like dot-notation, camel-case expansion, and configurable parsing behaviors.

Package Information

  • Package Name: yargs-parser
  • Package Type: npm
  • Language: TypeScript
  • Installation: npm install yargs-parser

Core Imports

Node.js

ESM (ES Modules):

import parser from "yargs-parser";

// Individual utilities (separate import paths)
import { camelCase, decamelize, looksLikeNumber } from "yargs-parser";
import { tokenizeArgString } from "yargs-parser/build/lib/tokenize-arg-string.js";

CommonJS:

const parser = require("yargs-parser");

// Access utilities via parser object
const { camelCase, decamelize, looksLikeNumber } = parser;

Browser (ESM)

<script type="module">
  import parser from "https://unpkg.com/yargs-parser@22.0.0/browser.js";
  
  // Utilities are available on the parser object
  const { camelCase, decamelize, looksLikeNumber } = parser;
  
  // Note: tokenizeArgString and config file loading not supported in browser
</script>

Deno

import parser from "https://deno.land/x/yargs_parser/deno.ts";
// or from specific version:
// import parser from "https://deno.land/x/yargs_parser@v22.0.0/deno.ts";

// Utilities available on parser object
const { camelCase, decamelize, looksLikeNumber } = parser;

// Note: Only .json config files supported in Deno

Basic Usage

import parser from "yargs-parser";

// Parse process arguments
const argv = parser(process.argv.slice(2));
console.log(argv);

// Parse string directly
const result = parser("--foo=99 --bar hello -x 33");
console.log(result);
// Output: { _: [], foo: 99, bar: 'hello', x: 33 }

// Parse with options
const parsed = parser(['--name', 'Alice', '--age', '25', '--verbose'], {
  string: ['name'],
  number: ['age'],
  boolean: ['verbose']
});
console.log(parsed);
// Output: { _: [], name: 'Alice', age: 25, verbose: true }

Architecture

yargs-parser is built around several key components:

  • Core Parser: Main parsing function that handles argument tokenization and processing
  • Type System: Complete TypeScript integration with detailed type definitions for all options and return values
  • Configuration Engine: Extensive configuration system with 18+ behavioral options (camel-case expansion, dot-notation, etc.)
  • Platform Support: Cross-platform compatibility with Node.js, browser, and Deno environments
  • String Utilities: Built-in utility functions for camelCase conversion, number detection, and string manipulation

Capabilities

Core Parsing

Main argument parsing functionality that converts command-line arguments into structured JavaScript objects with extensive configuration options.

function parser(args: string | any[], opts?: Partial<Options>): Arguments;

interface Arguments {
  _: (string | number)[];
  '--'?: (string | number)[];
  [argName: string]: any;
}

Core Parsing

Detailed Parsing

Advanced parsing mode that returns comprehensive information including error details, alias mappings, and parsing metadata.

function parser.detailed(args: string | any[], opts?: Partial<Options>): DetailedArguments;

interface DetailedArguments {
  argv: Arguments;
  error: Error | null;
  aliases: Dictionary<string[]>;
  newAliases: Dictionary<boolean>;
  defaulted: Dictionary<boolean>;
  configuration: Configuration;
}

Detailed Parsing

Configuration Options

Comprehensive parsing behavior configuration with 18+ options controlling how arguments are interpreted and processed.

interface Configuration {
  'boolean-negation': boolean;
  'camel-case-expansion': boolean;
  'combine-arrays': boolean;
  'dot-notation': boolean;
  'duplicate-arguments-array': boolean;
  'flatten-duplicate-arrays': boolean;
  'greedy-arrays': boolean;
  'halt-at-non-option': boolean;
  'nargs-eats-options': boolean;
  'negation-prefix': string;
  'parse-positional-numbers': boolean;
  'parse-numbers': boolean;
  'populate--': boolean;
  'set-placeholder-key': boolean;
  'short-option-groups': boolean;
  'strip-aliased': boolean;
  'strip-dashed': boolean;
  'unknown-options-as-args': boolean;
}

Configuration Options

Parser Options

Parsing hints and type specifications that control how individual arguments are processed and coerced.

interface Options {
  alias: Dictionary<string | string[]>;
  array: ArrayOption | ArrayOption[];
  boolean: string | string[];
  config: string | string[] | Dictionary<boolean | ConfigCallback>;
  configObjects: Dictionary<any>[];
  configuration: Partial<Configuration>;
  coerce: Dictionary<CoerceCallback>;
  count: string | string[];
  default: Dictionary<any>;
  envPrefix?: string;
  narg: Dictionary<number>;
  normalize: string | string[];
  string: string | string[];
  number: string | string[];
  __: (format: any, ...param: any[]) => string;
  key: Dictionary<any>;
}

Parser Options

String Utilities

Built-in utility functions for string manipulation and number detection that are also exposed as part of the public API.

function parser.camelCase(str: string): string;
function parser.decamelize(str: string, joinString?: string): string;
function parser.looksLikeNumber(x: null | undefined | number | string): boolean;

String Utilities

Argument String Tokenization

Low-level utility for tokenizing argument strings into arrays, handling quoted strings and escape sequences.

function tokenizeArgString(argString: string | any[]): string[];

Argument String Tokenization

Types

Core Types

type ArgsInput = string | any[];
type ArgsOutput = (string | number)[];

interface Dictionary<T = any> {
  [key: string]: T;
}

Parser Types

interface Parser {
  (args: ArgsInput, opts?: Partial<Options>): Arguments;
  detailed(args: ArgsInput, opts?: Partial<Options>): DetailedArguments;
  camelCase(str: string): string;
  decamelize(str: string, joinString?: string): string;
  looksLikeNumber(x: null | undefined | number | string): boolean;
}

Configuration Types

type ArrayOption = string | { 
  key: string; 
  boolean?: boolean; 
  string?: boolean; 
  number?: boolean; 
  integer?: boolean; 
};

type CoerceCallback = (arg: any) => any;
type ConfigCallback = (configPath: string) => { [key: string]: any } | Error;

Advanced Types

// Utility types for working with keys and values
type KeyOf<T> = {
  [K in keyof T]: string extends K ? never : number extends K ? never : K
} extends { [_ in keyof T]: infer U } ? U : never;

type ValueOf<T> = T extends (infer U)[] ? U : T[keyof T];

// Internal flag management types
type StringFlag = Dictionary<string[]>;
type BooleanFlag = Dictionary<boolean>;
type NumberFlag = Dictionary<number>;
type ConfigsFlag = Dictionary<string | string[] | boolean | ConfigCallback>;
type CoercionsFlag = Dictionary<CoerceCallback>;
type KeysFlag = string[];

interface Flags {
  aliases: StringFlag;
  arrays: BooleanFlag;
  bools: BooleanFlag;
  strings: BooleanFlag;
  numbers: BooleanFlag;
  counts: BooleanFlag;
  normalize: BooleanFlag;
  configs: ConfigsFlag;
  nargs: NumberFlag;
  coercions: CoercionsFlag;
  keys: KeysFlag;
}

type Flag = ValueOf<Omit<Flags, 'keys'>>;
type FlagValue = ValueOf<Flag>;
type FlagsKey = KeyOf<Omit<Flags, 'keys'>>;
type ArrayFlagsKey = Extract<FlagsKey, 'bools' | 'strings' | 'numbers'>;

// Parser mixin interface for platform-specific implementations
interface YargsParserMixin {
  cwd: Function;
  format: Function;
  normalize: Function;
  require: Function;
  resolve: Function;
  env: Function;
}

// Default values configuration
enum DefaultValuesForTypeKey {
  BOOLEAN = 'boolean',
  STRING = 'string',
  NUMBER = 'number',
  ARRAY = 'array',
}

interface DefaultValuesForType {
  [DefaultValuesForTypeKey.BOOLEAN]: boolean;
  [DefaultValuesForTypeKey.STRING]: string;
  [DefaultValuesForTypeKey.NUMBER]: undefined;
  [DefaultValuesForTypeKey.ARRAY]: any[];
}

type OptionsDefault = ValueOf<Pick<Required<Options>, 'default'>>;