# What changed in command-line-args

> 12 changes in command-line-args 5 to 6 from its official release notes, upgrade guides and advisories: 3 breaking, 6 new APIs and options. Each one cited. Sources checked 2026-10-28. HTML: https://unstale.sh/npm/command-line-args/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## command-line-args 6

### Breaking changes

- Support for Node versions less than v12.20 was dropped; users of older versions should stay on v5.2.1. (6.0.0) — [release notes](https://github.com/75lb/command-line-args/releases/tag/v6.0.0)

### Behavior and default changes

- The package is now a native ES6 module while continuing to support CommonJS. (6.0.0) — [release notes](https://github.com/75lb/command-line-args/releases/tag/v6.0.0)

## command-line-args 5

### Breaking changes

- Setting a singular, non-multiple option more than once now throws an ALREADY_SET exception. (5.0.0) — [release notes](https://github.com/75lb/command-line-args/releases/tag/v5.0.0)
- Unknown values now throw UNKNOWN_VALUE by default, so all options and values must be accounted for in the option definitions. Use partial or stopAtFirstUnknown to disable strict-by-default behaviour. (5.0.0) — [release notes](https://github.com/75lb/command-line-args/releases/tag/v5.0.0)

### New APIs and options

- The ALREADY_SET exception now has an optionName property containing the option name that has already been set. (5.0.0) — [release notes](https://github.com/75lb/command-line-args/releases/tag/v5.0.0)
- Adds camelCase as a parse feature. (5.0.0) — [release notes](https://github.com/75lb/command-line-args/releases/tag/v5.0.0)
- Adds stopAtFirstUnknown as a parse option; it can also disable strict-by-default behaviour. (5.0.0) — [release notes](https://github.com/75lb/command-line-args/releases/tag/v5.0.0)
- Adds lazyMultiple as an option definition feature. (5.0.0) — [release notes](https://github.com/75lb/command-line-args/releases/tag/v5.0.0)
- The UNKNOWN_OPTION exception now has an optionName property containing the argument that specified the unknown option. (5.0.0) — [release notes](https://github.com/75lb/command-line-args/releases/tag/v5.0.0)
- The UNKNOWN_VALUE exception now has a value property containing the unknown value. (5.0.0) — [release notes](https://github.com/75lb/command-line-args/releases/tag/v5.0.0)

### Fixes and other changes

- Fixes an unknown --option=value notation value being consumed as defaultOption. (5.0.0) — [release notes](https://github.com/75lb/command-line-args/releases/tag/v5.0.0)
- Fixes an unknown --option=value argument being split when defaultOption is set. (5.0.0) — [release notes](https://github.com/75lb/command-line-args/releases/tag/v5.0.0)
