Releases: tj/commander.js
Releases · tj/commander.js
9.0.0-1
9.0.0-0
Added
- simpler ECMAScript import (#1589)
- Option.preset() allows specifying value/arg for option when used without option-argument (especially optional, but also boolean option) (#1652)
.executableDir()
for custom search for subcommands (#1571)- throw with helpful message if pass
Option
to.option()
or.requiredOption()
(#1655)
Changed
- Breaking: Commander 9 requires Node.js v12.20.0 or higher
- update package-lock.json to lockfile@2 format (#1659)
showSuggestionAfterError
is now on by default (#1657)- Breaking: default value specified for boolean option now always used as default value (see .preset() to match some previous behaviours) (#1652)
- default value for boolean option only shown in help if true/false (#1652)
- use command name as prefix for subcommand stand-alone executable name (with fallback to script name for backwards compatibility) (#1571)
- allow absolute path with
executableFile
(#1571) - removed restriction that nested subcommands must specify
executableFile
(#1571)
Fixed
- option with optional argument not supplied on command line now works when option already has a value, whether from default value or from previous arguments (#1652)
Removed
- Breaking: removed internal fallback to
require.main.filename
when script not known from arguments passed to.parse()
(can supply details using.name()
, and.executableDir()
orexecutableFile
) (#1571)
v8.3.0
v8.2.0
Added
.showSuggestionAfterError()
to show suggestions after unknown command or unknown option (#1590)- add
Option
support for values from environment variables using.env()
(#1587)
Changed
- show error for unknown global option before subcommand (rather than just help) (#1590)
Removed
- TypeScript declaration of unimplemented
Option
methodargumentRejected
v8.1.0
v8.0.0
Added
.argument(name, description)
for adding command-arguments (#1490).createArgument()
factory method (#1497).addArgument()
(#1490)Argument
supports.choices()
(#1525).showHelpAfterError()
to display full help or a custom message after an error (#1534).hook()
with support for'preAction'
and'postAction'
callbacks (#1514)- client typing of
.opts()
return type using TypeScript generics (#1539) - the number of command-arguments is checked for programs without an action handler (#1502)
.getOptionValue()
and.setOptionValue()
(#1521)
Changed
- refactor and simplify TypeScript declarations (with no default export) (#1520)
.parseAsync()
is now declared asasync
(#1513)- Breaking:
Help
method.visibleArguments()
returns array ofArgument
(#1490) - Breaking: Commander 8 requires Node.js 12 or higher (#1500)
- Breaking:
CommanderError
codecommander.invalidOptionArgument
renamedcommander.invalidArgument
(#1508) - Breaking: TypeScript declaration for
.addTextHelp()
callback no longer allows result ofundefined
, now juststring
(#1516) - refactor
index.tab
into a file per class (#1522) - remove help suggestion from "unknown command" error message (see
.showHelpAfteError()
) (#1534) Command
property.arg
initialised to empty array (was previously undefined) (#1529)- update dependencies
Deprecated
- second parameter of
cmd.description(desc, argDescriptions)
for adding argument descriptions (#1490)- (use new
.argument(name, description)
instead)
- (use new
InvalidOptionArgumentError
(replaced byInvalidArgumentError
) (#1508)
Removed
- Breaking: TypeScript declaration for default export of global
Command
object (#1520)- (still available as named
program
export)
- (still available as named
Migration Tips
If you have a simple program without an action handler, you will now get an error if
there are missing command-arguments.
program
.option('-d, --debug')
.arguments('<file>');
program.parse();
$ node trivial.js
error: missing required argument 'file'
If you want to show the help in this situation, you could check the arguments before parsing:
if (process.argv.length === 2)
program.help();
program.parse();
Or, you might choose to show the help after any user error:
program.showHelpAfterError();
8.0.0-2
8.0.0-1
8.0.0-0
Added
.getOptionValue()
and.setOptionValue()
(#1521).hook()
with support for'preAction'
and'postAction'
callbacks (#1514).argument(name, description)
for adding command-arguments (#1490).createArgument()
factory method (#1497)- the number of command-arguments is checked for programs without an action handler (#1502)
Changed
- refactor and simplify TypeScript declarations (with no default export) (#1520)
.parseAsync()
is now declared asasync
(#1513)- Breaking:
Help
method.visibleArguments()
returns array ofArgument
(#1490) - Breaking: Commander 8 requires Node.js 12 or higher (#1500)
- Breaking:
CommanderError
codecommander.invalidOptionArgument
renamedcommander.invalidArgument
(#1508) - Breaking: TypeScript declaration for
.addTextHelp()
callback no longer allows result ofundefined
, now juststring
(#1516)
Deprecated
- second parameter of
cmd.description(desc, argDescriptions)
for adding argument descriptions (#1490)- (use new
.argument(name, description)
instead)
- (use new
InvalidOptionArgumentError
(replaced byInvalidArgumentError
) (#1508)
Removed
- Breaking: TypeScript declaration for default export of global
Command
object (#1520)- (still available as named
program
export)
- (still available as named