All free skills / Other majors

yargs-parser 22.x

Use yargs-parser v22 as a standalone ESM-first argument parser, including its callable parser, detailed results, helper methods, and documented parsing options.

For
yargs-parser@22.0.0
Verified
2026-09-08, 8 examples executed
Skill package
@modootoday/pmcp-yargs-parser@22.0.0

Use this skill for free

No PMCP login or subscription is required. Download the original instructions, or install the content-only archive with your project's package manager.

Download SKILL.md · Download package archive

npm install --save-dev https://pmcp.build/skills/yargs-parser/22/package.tgz

PMCP discovers the installed package's instructions. Connect your runtime after installation.

Archive integritysha512-usFTjC+TEowlqrDc4b/JuAqI7uE4Ul2GeoE7v2W53VyxnL5j8r+HMg1AOK4GeblBwFxss/e6sayxCYu/iO99Hw==

Complete instructions

Verified against yargs-parser@22.0.0 on 2026-09-08. 8 of 8 examples executed.

yargs-parser v22

Import and runtime

yargs-parser v22 is ESM-first. In an ESM script, use its default export:

import parser from 'yargs-parser'

The package metadata declares type: "module" and supports Node ^20.19.0 || ^22.12.0 || >=23. The callable default export accepts either a command-line string or an array and returns parsed values, including _ for positional arguments.

Older examples commonly use require('yargs-parser'). Do not copy that shape into an ESM-first v22 application without checking the module environment. The documented v22 import is the default ESM import above.

Basic parsing

Pass a string or an array of argument strings. Long options support --name=value and separated values. Positional arguments are returned in _.

import assert from 'node:assert/strict'
import parser from 'yargs-parser'

const argv = parser('--foo=99 --bar=9987930 positional', {
  string: ['bar']
})

assert.equal(argv.foo, 99)
assert.equal(argv.bar, '9987930')
assert.deepEqual(argv._, ['positional'])

When the caller already has an argument vector, pass the array directly rather than joining it into a string:

import assert from 'node:assert/strict'
import parser from 'yargs-parser'

const argv = parser(['--name', 'Ada', 'file.txt'], {
  string: ['name']
})

assert.equal(argv.name, 'Ada')
assert.deepEqual(argv._, ['file.txt'])

Typed and repeated options

The documented option groups include string, number, boolean, array, count, default, narg, coerce, config, configObjects, configuration, envPrefix, and normalize.

Use string when a value must not be converted to a number. Use number when a numeric option should be treated as numeric. array collects repeated values, while count increments each time the flag occurs.

import assert from 'node:assert/strict'
import parser from 'yargs-parser'

const argv = parser([
  '--tag', 'one',
  '--tag', 'two',
  '--verbose',
  '--verbose',
  '--port', '8080'
], {
  array: ['tag'],
  boolean: ['verbose'],
  count: ['verbose'],
  number: ['port']
})

assert.deepEqual(argv.tag, ['one', 'two'])
assert.equal(argv.verbose, 2)
assert.equal(argv.port, 8080)

Defaults and coercion are parser options, not post-processing requirements:

import assert from 'node:assert/strict'
import parser from 'yargs-parser'

const argv = parser('--user ada', {
  string: ['user', 'mode'],
  default: { mode: 'safe' },
  coerce: {
    user: (value: string) => value.toUpperCase()
  }
})

assert.equal(argv.user, 'ADA')
assert.equal(argv.mode, 'safe')

narg declares how many arguments an option consumes. Keep the declaration consistent with the input shape; it is not equivalent to declaring an option as an array.

Detailed parsing

parser.detailed(args, opts) returns more than the final argument object. Its result contains argv, error, aliases, newAliases, defaulted, and configuration.

import assert from 'node:assert/strict'
import parser from 'yargs-parser'

const result = parser.detailed('--foo=99', {
  alias: { foo: ['f'] }
})

assert.equal(result.error, null)
assert.equal(result.argv.foo, 99)
assert.equal(result.argv.f, 99)
assert.ok(result.aliases)
assert.ok(result.newAliases)
assert.ok(result.defaulted)
assert.ok(result.configuration)

Use the detailed form when the caller needs to distinguish parser metadata, aliases, defaults, configuration, or an error from the final argv object. Use the callable form when only parsed arguments are needed.

Helper exports

The default parser function exposes these helpers:

  • parser.camelCase(str)
  • parser.decamelize(str, joinString?)
  • parser.looksLikeNumber(value)
import assert from 'node:assert/strict'
import parser from 'yargs-parser'

assert.equal(parser.camelCase('foo-bar'), 'fooBar')
assert.equal(parser.decamelize('fooBar'), 'foo-bar')
assert.equal(parser.looksLikeNumber('99.3'), true)
assert.equal(parser.looksLikeNumber('not-a-number'), false)

Environment and configuration-related options

envPrefix reads matching prefixed environment variables. Set the environment in the process before parsing if a standalone script needs to exercise this behavior:

import assert from 'node:assert/strict'
import parser from 'yargs-parser'

process.env.DEMO_PORT = '4321'
const argv = parser('', { envPrefix: 'DEMO' })

assert.equal(argv.port, 4321)

configObjects accepts configuration objects directly and is suitable when configuration is already available in memory:

import assert from 'node:assert/strict'
import parser from 'yargs-parser'

const argv = parser('--cli yes', {
  string: ['cli', 'fromConfig'],
  configObjects: [{ fromConfig: 'memory' }]
})

assert.equal(argv.cli, 'yes')
assert.equal(argv.fromConfig, 'memory')

config loads a configuration-file path, and normalize uses path.normalize(). These options depend on Node-specific environment or filesystem behavior and are not demonstrated in the standalone examples here.

-- values and configuration

The parser can optionally retain values after --, depending on the configuration options. Treat this as an explicit parser configuration rather than assuming every invocation exposes a -- property. The returned object may contain the optional -- values in addition to _ and named options.

What this skill does not cover

This skill does not cover yargs itself, command registration, describe/it/expect, CLI runner behavior, browser or Deno entrypoints, the exact filesystem format consumed by config, or platform-specific results of normalize. It also does not cover options or behaviors not supported by the supplied v22 research.