Releases: tj/commander.js
Releases Β· tj/commander.js
v12.1.0
Added
- auto-detect special node flags
node --eval
andnode --print
when call.parse()
with no arguments (#2164)
Changed
- prefix require of Node.js core modules with
node:
(#2170) - format source files with Prettier (#2180)
- switch from StandardJS to directly calling ESLint for linting (#2153)
- extend security support for previous major version of Commander (#2150)
Removed
- removed unimplemented Option.fullDescription from TypeScript definition (#2191)
v12.0.0
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
passThroughOptions
constraints when using.addCommand
and 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 private
with 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
program
export 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
v12.0.0-1
Added
.addHelpOption()
as another way of configuring built-in help option (#2006).helpCommand()
for configuring built-in help command (#2087)
Changed
.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)
v12.0.0-0 Prerelease
Fixed
- Breaking: use non-zero exit code when spawned executable subcommand terminates due to a signal (#2023)
- Breaking: check
passThroughOptions
constraints when using.addCommand
and 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 private
with documented@private
(#1949)
Removed
- Breaking: removed default export of a global Command instance from CommonJS (use the named
program
export 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
v11.1.0
Fixed
- TypeScript: update
OptionValueSource
to allow any string, to match supported use of custom sources (#1983) - TypeScript: add that
Command.version()
can also be used as getter (#1982) - TypeScript: add null return type to
Commands.executableDir()
, for when not configured (#1965) - subcommands with an executable handler and only a short help flag are now handled correctly by the parent's help command (#1930)
Added
registeredArguments
property onCommand
with the array of definedArgument
(likeCommand.options
forOption
) (#2010)- TypeScript declarations for Option properties:
envVar
,presetArg
(#2019) - TypeScript declarations for Argument properties:
argChoices
,defaultValue
,defaultValueDescription
(#2019) - example file which shows how to configure help to display any custom usage in the list of subcommands (#1896)
Changed
- (developer) refactor TypeScript configs for multiple use-cases, and enable checks in JavaScript files in supporting editors (#1969)
Deprecated
Command._args
was private anyway, but now available asregisteredArguments
(#2010)