Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
^4.0.0
->^9.0.0
Release Notes
tj/commander.js
v9.4.1
Compare Source
Fixed
.setOptionValue()
now also clears option source ([#1795])implied
toOptionValueSource
for option values set by using.implies()
([#1794])undefined
to return type of.getOptionValueSource()
([#1794])Changed
v9.4.0
Compare Source
Added
preSubcommand
hook called before direct subcommands ([#1763])Fixed
InvalidOptionArgumentError
in esm ([#1756])Changed
v9.3.0
Compare Source
Added
.summary()
for a short summary to use instead of description when listing subcommands in help ([#1726])Option.implies()
to set other option values when the option is specified ([#1724])Fixed
string[]
to.options()
default value parameter type for use with variadic options ([#1721])Deprecated
-ws
) ([#1718])v9.2.0
Compare Source
Added
Fixed
Changed
String.prototype.substr
([#1706])v9.1.0
Compare Source
Added
.conflicts()
to set conflicting options which can not be specified together ([#1678])v9.0.0
Compare Source
Added
.executableDir()
for custom search for subcommands ([#1571])Option
to.option()
or.requiredOption()
([#1655])error()
for generating errors from client code just like Commander generated errors, with support for.configureOutput()
,.exitOverride()
, and.showHelpAfterError()
([#1675]).optsWithGlobals()
to return merged local and global options ([#1671])Changed
showSuggestionAfterError
is now on by default ([#1657])executableFile
([#1571])executableFile
([#1571]).choices()
[(#1667)].parse()
,.parseAsync()
,.aliases()
[(#1669)]Fixed
Removed
require.main.filename
when script not known from arguments passed to.parse()
(can supply details using.name()
, and.executableDir()
orexecutableFile
) ([#1571])v8.3.0
Compare Source
Added
.getOptionValueSource()
and.setOptionValueWithSource()
, where expected values for source are one of 'default', 'env', 'config', 'cli' ([#1613])Deprecated
.command('*')
, use default command instead ([#1612])on('command:*')
, use.showSuggestionAfterError()
instead ([#1612])v8.2.0
Compare Source
Added
.showSuggestionAfterError()
to show suggestions after unknown command or unknown option ([#1590])Option
support for values from environment variables using.env()
([#1587])Changed
Removed
Option
methodargumentRejected
v8.1.0
Compare Source
Added
.copyInheritedSettings()
([#1557])Argument
methods for.argRequired()
and.argOptional()
([#1567])v8.0.0
Compare Source
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]).opts()
return type using TypeScript generics ([#1539]).getOptionValue()
and.setOptionValue()
([#1521])Changed
.parseAsync()
is now declared asasync
([#1513])Help
method.visibleArguments()
returns array ofArgument
([#1490])CommanderError
codecommander.invalidOptionArgument
renamedcommander.invalidArgument
([#1508]).addTextHelp()
callback no longer allows result ofundefined
, now juststring
([#1516])index.tab
into a file per class ([#1522]).showHelpAfteError()
) ([#1534])Command
property.arg
initialised to empty array (was previously undefined) ([#1529])Deprecated
cmd.description(desc, argDescriptions)
for adding argument descriptions ([#1490]).argument(name, description)
instead)InvalidOptionArgumentError
(replaced byInvalidArgumentError
) ([#1508])Removed
Command
object ([#1520])program
export)Migration Tips
If you have a simple program without an action handler, you will now get an error if
there are missing command-arguments.
$ 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:
Or, you might choose to show the help after any user error:
v7.2.0
Compare Source
Added
parent
property onCommand
([#1475]).attributeName()
onOption
([#1483])Changed
v7.1.0
Compare Source
Added
.cjs
to list of expected script file extensions ([#1449])Fixed
process.mainModule
([#1448])command('*')
and call when command line includes options ([#1464])on('command:*', ...)
and call when command line includes unknown options ([#1464])Changed
v7.0.0
Compare Source
Added
.enablePositionalOptions()
to let program and subcommand reuse same option ([#1427]).passThroughOptions()
to pass options through to other programs without needing--
([#1427]).allowExcessArguments(false)
to show an error message if there are too many command-arguments on command line for the action handler ([#1409]).configureOutput()
to modify use of stdout and stderr or customise display of errors ([#1387]).addHelpText()
to add text before or after the built-in help, for just current command or also for all subcommands ([#1296]).createOption()
to support subclassing of automatically created options (like.createCommand()
) ([#1380])Changed
program.opts()
.storeOptionsAsProperties()
.help()
and.outputHelp()
(removed from README) ([#1296])process.stderr.write()
instead ofconsole.error()
.on('--help')
(removed from README) ([#1296])Fixed
Deleted
.passCommandToAction()
([#1409]).allowExcessArguments(false)
Migration Tips
The biggest change is the parsed option values. Previously the options were stored by default as properties on the command object, and now the options are stored separately.
If you wish to restore the old behaviour and get running quickly you can call
.storeOptionsAsProperties()
.To allow you to move to the new code patterns incrementally, the action handler will be passed the command twice,
to match the new "options" and "command" parameters (see below).
program options
Use the
.opts()
method to access the options. This is available on any command but is used most with the program.action handler
The action handler gets passed a parameter for each command-argument you declared. Previously by default the next parameter was the command object with the options as properties. Now the next two parameters are instead the options and the command. If you
only accessed the options there may be no code changes required.
If you already set
.storeOptionsAsProperties(false)
you may still need to adjust your code.v6.2.1
Compare Source
Fixed
v6.2.0
Compare Source
Added
.description()
to describe command arguments ([#1353])Fixed
Changed
v6.1.0
Compare Source
Added
.combineFlagAndOptionalValue(false)
to ease upgrade path from older versions of Commander ([#1326]).helpOption(false)
([#1325])argumentDescription
to.description()
([#1323])Changed
Fixed
v6.0.0
Compare Source
Added
-n
accessed asopts().n
(previously uppercase)Fixed
v5.1.0
Compare Source
Added
addCommand()
forhidden
andisDefault
([#1232])Fixed
helpOption
([#1248])Changed
arguments
to improve auto-generated help in editors ([#1235]).command()
configurationnoHelp
tohidden
(but not remove old support) ([#1232])v5.0.0
Compare Source
Added
.addCommand()
for adding a separately configured command ([#764] [#1149]).addHelpCommand()
([#1149])-a -b -p 80
can be written as-abp80
) ([#1145]).parseOption()
includes short flag and long flag expansions ([#1145]).helpInformation()
returns help text as a string, previously a private routine ([#1169]).parse()
implicitly usesprocess.argv
if arguments not specified ([#1172]).parse()
arguments "from", if not following node conventions ([#512] [#1172])commands
property ofCommand
([#1184])program
property ([#1195])createCommand
factory method to simplify subclassing ([#1191])Fixed
command:*
for executable subcommands ([#809] [#1149])Changed
.args
contains command arguments with just recognised options removed ([#1032] [#1138]).option()
([#1119]).allowUnknownOption()
([#802] [#1138]).args
-ab
or--foo=bar
) ([#1145]).parseOptions()
([#1138])args
in returned result renamedoperands
and does not include anything after first unknown optionunknown
in returned result has arguments after first unknown option including operands, not just options and values.on('command:*', callback)
and other command events passed (changed) results from.parseOptions
, i.e. operands and unknown ([#1138])this
rather thanCommand
([#1180]).parseAsync
returnsPromise<this>
to be consistent with.parse()
([#1180])Removed
@types/node
([#1146])normalize
(the functionality has been integrated intoparseOptions
) ([#1145])parseExpectedArgs
is now private ([#1149])Migration Tips
If you use
.on('command:*')
or more complicated tests to detect an unrecognised subcommand, you may be able to delete the code and rely on the default behaviour.If you use
program.args
or more complicated tests to detect a missing subcommand, you may be able to delete the code and rely on the default behaviour.If you use
.command('*')
to add a default command, you may be be able to switch toisDefault:true
with a named command.If you want to continue combining short options with optional values as though they were boolean flags, set
combineFlagAndOptionalValue(false)
to expand
-fb
to-f -b
rather than-f b
.Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate. View repository job log here.