12.0.0
Added 2
- Add .addHelpOption() as another way of configuring built-in help option
- Add .helpCommand() for configuring built-in help command
Changed 8
- Commander 12 requires Node.js v18 or higher
- Throw an error if adding an option with a flag which is already in use
- Throw an error if adding a command with name or alias which is already in use
- Throw error when calling .storeOptionsAsProperties() after setting an option value
- Replace non-standard JSDoc of @api private with documented @private
- .addHelpCommand() now takes a Command (passing string or boolean still works as before but deprecated)
- Refactor internal implementation of built-in help option
- Refactor internal implementation of built-in help command
Fixed 2
- Use non-zero exit code when spawned executable subcommand terminates due to a signal
- Check passThroughOptions constraints when using .addCommand and throw if parent command does not have .enablePositionalOptions() enabled
Removed 1
- Remove default export of a global Command instance from CommonJS (use the named program export instead)
Deprecated 1
- .addHelpCommand() passing string or boolean (use .helpCommand() or pass a Command)
From Commander.js
Added
.addHelpOption()as another way of configuring built-in help option ([#2006]).helpCommand()for configuring built-in help command ([#2087])
Fixed
- Breaking: use non-zero exit code when spawned executable subcommand terminates due to a signal ([#2023])
- Breaking: check
passThroughOptionsconstraints when using.addCommandand throw if parent command does not have.enablePositionalOptions()enabled ([#1937])
Changed
- Breaking: Commander 12 requires Node.js v18 or higher ([#2027])
- Breaking: throw an error if add an option with a flag which is already in use ([#2055])
- Breaking: throw an error if add a command with name or alias which is already in use ([#2059])
- Breaking: throw error when calling
.storeOptionsAsProperties()after setting an option value ([#1928]) - replace non-standard JSDoc of
@api privatewith documented@private([#1949]) .addHelpCommand()now takes a Command (passing string or boolean still works as before but deprecated) ([#2087])- refactor internal implementation of built-in help option ([#2006])
- refactor internal implementation of built-in help command ([#2087])
Deprecated
.addHelpCommand()passing string or boolean (use.helpCommand()or pass a Command) ([#2087])
Removed
- Breaking: removed default export of a global Command instance from CommonJS (use the named
programexport instead) ([#2017])
Migration Tips
global program
If you are using the deprecated default import of the global Command object, you need to switch to using a named import (or create a new Command).
// const program = require('commander');
const { program } = require('commander');
option and command clashes
A couple of configuration problems now throw an error, which will pick up issues in existing programs:
- adding an option which uses the same flag as a previous option
- adding a command which uses the same name or alias as a previous command