All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning. (Format adopted after v3.0.0.)
4.0.1 (2019-11-12)
- display help when requested, even if there are missing required options [(#1091)]
4.0.0 (2019-11-02)
- automatically wrap and indent help descriptions for options and commands (#1051)
.exitOverride()
allows override of calls toprocess.exit
for additional error handling and to keep program running (#1040)- support for declaring required options with
.requiredOptions()
(#1071) - GitHub Actions support (#1027)
- translation links in README
- dev: switch tests from Sinon+Should to Jest with major rewrite of tests (#1035)
- call default subcommand even when there are unknown options (#1047)
- Breaking Commander is only officially supported on Node 8 and above, and requires Node 6 (#1053)
- Breaking keep command object out of program.args when action handler called (#1048)
- also, action handler now passed array of unknown arguments
- complain about unknown options when program argument supplied and action handler (#1049)
- this changes parameters to
command:*
event to include unknown arguments
- this changes parameters to
- removed deprecated
customFds
option from call tochild_process.spawn
(#1052) - rework TypeScript declarations to bring all types into imported namespace (#1081)
If you were previously using code like:
if (!program.args.length) ...
a partial replacement is:
if (program.rawArgs.length < 3) ...
4.0.0-1 Prerelease (2019-10-08)
(Released in 4.0.0)
4.0.0-0 Prerelease (2019-10-01)
(Released in 4.0.0)
2.20.1 (2019-09-29)
- Improve tracking of executable subcommands.
- update development dependencies
3.0.2 (2019-09-27)
- Improve tracking of executable subcommands.
- update development dependencies
3.0.1 (2019-08-30)
- .name and .usage to README (#1010)
- Table of Contents to README (#1010)
- TypeScript definition for
executableFile
in CommandOptions (#1028)
- consistently use
const
rather thanvar
in README (#1026)
- help for sub commands with custom executableFile (#1018)
3.0.0 / 2019-08-08
- Add option to specify executable file name (#999)
- e.g.
.command('clone', 'clone description', { executableFile: 'myClone' })
- e.g.
- Change docs for
.command
to contrast action handler vs git-style executable. (#938 #990) - Breaking Change TypeScript to use overloaded function for
.command
. (#938 #990) - Change to use straight quotes around strings in error messages (like 'this' instead of `this') (#915)
- Add TypeScript "reference types" for node (#974)
- Add support for hyphen as an option argument in subcommands (#697)
- Add support for a short option flag and its value to be concatenated for action handler subcommands (#599)
- e.g.
-p 80
can also be supplied as-p80
- e.g.
- Add executable arguments to spawn in win32, for git-style executables (#611)
- e.g.
node --harmony myCommand.js clone
- e.g.
- Add parent command as prefix of subcommand in help (#980)
- Add optional custom description to
.version
(#963)- e.g.
program.version('0.0.1', '-v, --vers', 'output the current version')
- e.g.
- Add
.helpOption(flags, description)
routine to customise help flags and description (#963)- e.g.
.helpOption('-e, --HELP', 'read more information')
- e.g.
- Fix behavior of --no-* options (#795)
- can now define both
--foo
and--no-foo
- Breaking custom event listeners:
--no-foo
on cli now emitsoption:no-foo
(previouslyoption:foo
) - Breaking default value: defining
--no-foo
after defining--foo
leaves the default value unchanged (previously set it to false) - allow boolean default value, such as from environment (#987)
- can now define both
- Increment inspector port for spawned subcommands (#991)
- e.g.
node --inspect myCommand.js clone
- e.g.
The custom event for a negated option like --no-foo
is option:no-foo
(previously option:foo
).
program
.option('--no-foo')
.on('option:no-foo', () => {
console.log('removing foo');
});
When using TypeScript, adding a command does not allow an explicit undefined
for an unwanted executable description (e.g
for a command with an action handler).
program
.command('action1', undefined, { noHelp: true }) // No longer valid
.command('action2', { noHelp: true }) // Correct
(Released as 3.0.0)
- fix: resolve symbolic links completely when hunting for subcommands (#935)
- Update index.d.ts (#930)
- Update Readme.md (#924)
- Remove --save option as it isn't required anymore (#918)
- Add link to the license file (#900)
- Added example of receiving args from options (#858)
- Added missing semicolon (#882)
- Add extension to .eslintrc (#876)
- Removed newline after Options and Commands headers (#864)
- Bugfix - Error output (#862)
- Fix to change default value to string (#856)
- Standardize help output (#853)
- chmod 644 travis.yml (#851)
- add support for execute typescript subcommand via ts-node (#849)
- Fix bug in command emit (#844)
- fixed newline output after help information (#833)
- Fix to emit the action even without command (#778)
- npm update (#823)
- Remove Makefile and
test/run
(#821) - Make 'npm test' run on Windows (#820)
- Add badge to display install size (#807)
- chore: cache node_modules (#814)
- chore: remove Node.js 4 (EOL), add Node.js 10 (#813)
- fixed typo in readme (#812)
- Fix types (#804)
- Update eslint to resolve vulnerabilities in lodash (#799)
- updated readme with custom event listeners. (#791)
- fix tests (#794)
- Update downloads badge to point to graph of downloads over time instead of duplicating link to npm
- Arguments description
- Fix typing of help function
- only register the option:version event once
- Fixes issue #727: Passing empty string for option on command is set to undefined
- enable eqeqeq rule
- resolves #754 add linter configuration to project
- resolves #560 respect custom name for version option
- document how to override the version flag
- document using options per command
- Do not print default for --no-
- remove trailing spaces in command help
- Update CI's Node.js to LTS and latest version
- typedefs: Command and Option types added to commander namespace
- fix: typings are not shipped
- Move @types/node to dev dependency
- add attributeName() method to Option objects
- Documentation updated for options with --no prefix
- typings:
outputHelp
takes a string as the first parameter - typings: use overloads
- feat(typings): update to match js api
- Print default value in option help
- Fix translation error
- Fail when using same command and alias (#491)
- feat(typings): add help callback
- fix bug when description is add after command with options (#662)
- Format js code
- Rename History.md to CHANGELOG.md (#668)
- feat(typings): add typings to support TypeScript (#646)
- use current node
- Fix help section order and padding (#652)
- feature: support for signals to subcommands (#632)
- Fixed #37, --help should not display first (#447)
- Fix translation errors. (#570)
- Add package-lock.json
- Remove engines
- Upgrade package version
- Prefix events to prevent conflicts between commands and options (#494)
- Removing dependency on graceful-readlink
- Support setting name in #name function and make it chainable
- Add .vscode directory to .gitignore (Visual Studio Code metadata)
- Updated link to ruby commander in readme files
- Update .travis.yml. drop support for older node.js versions.
- Fix require arguments in README.md
- On SemVer you do not start from 0.0.1
- Add missing semi colon in readme
- Add save param to npm install
- node v6 travis test
- Update Readme_zh-CN.md
- Allow literal '--' to be passed-through as an argument
- Test subcommand alias help
- link build badge to master branch
- Support the alias of Git style sub-command
- added keyword commander for better search result on npm
- Fix Sub-Subcommands
- test node.js stable
- Fixes TypeError when a command has an option called
--description
- Update README.md to make it beginner friendly and elaborate on the difference between angled and square brackets.
- Add chinese Readme file
- Add option
isDefault
to set default subcommand #415 @Qix- - Add callback to allow filtering or post-processing of help text #434 @djulien
- Fix
undefined
text in help information close #414 #416 @zhiyelee
- Back out
support multiline description
Close #396 #397
- Add
process.execArg
support, execution args like--harmony
will be passed to sub-commands #387 @DigitalIO @zhiyelee - Fix bug in Git-style sub-commands #372 @zhiyelee
- Allow commands to be hidden from help #383 @tonylukasavage
- When git-style sub-commands are in use, yet none are called, display help #382 @claylo
- Add ability to specify arguments syntax for top-level command #258 @rrthomas
- Support multiline descriptions #208 @zxqfox
- Revert #347 (fix collisions when option and first arg have same name) which causes a bug in #367.
- Fix git-style bug when installed globally. Close #335 #349 @zhiyelee
- Fix collisions when option and first arg have same name. Close #346 #347 @tonylukasavage
- Add support for camelCase on
opts()
. Close #353 @nkzawa - Add node.js 0.12 and io.js to travis.yml
- Allow RegEx options. #337 @palanik
- Fixes exit code when sub-command failing. Close #260 #332 @pirelenito
- git-style
bin
files in $PATH make sense. Close #196 #327 @zhiyelee
- added
Command#allowUnknownOption
method. Close #138 #318 @doozr @zhiyelee - Add application description to the help msg. Close #112 @dalssoft
- fixed two bugs incurred by variadic arguments. Close #291 @Quentin01 #302 @zhiyelee
- add support for variadic arguments. Closes #277 @whitlockjc
- fixed a bug on executing the coercion function of subcommands option. Closes #270
- added
Command.prototype.name
to retrieve command name. Closes #264 #266 @tonylukasavage - added
Command.prototype.opts
to retrieve all the options as a simple object of key-value pairs. Closes #262 @tonylukasavage - fixed a bug on subcommand name. Closes #248 @jonathandelgado
- fixed function normalize doesn’t honor option terminator. Closes #216 @abbr
- add command alias'. Closes PR #210
- fix: Typos. Closes #99
- fix: Unused fs module. Closes #217
- add passing of previous option value
- fix: support subcommands on windows. Closes #142
- Now the defaultValue passed as the second argument of the coercion function.
- add: allow cflag style option params, unit test, fixes #174
- remove input methods (.prompt, .confirm, etc)
- add support for sub-commands to co-exist with the original command
- add quick .runningCommand hack so you can opt-out of other logic when running a sub command
- add EACCES error handling
- fix sub-command --help
- allow "-" hyphen as an option argument
- support for RegExp coercion
- add more sub-command padding
- fix .usage() when args are present. Closes #106
- add git-style executable subcommand support. Closes #94
- fix
--name
clobbering. Closes #92 - fix examples/help. Closes #89
- add
outputHelp()
method.
- remove invalid .version() defaulting
- add
--foo=bar
support [arv] - fix password on node 0.8.8. Make backward compatible with 0.6 [focusaurus]
- fix issue #56
- fix tty.setRawMode(mode) was moved to tty.ReadStream#setRawMode() (i.e. process.stdin.setRawMode())
- add support for optional option descriptions
- add defaulting of
.version()
to package.json's version
- Added: append (yes or no) on confirmation
- Added: allow node.js v0.7.x
- Added
.prompt(obj, callback)
support. Closes #49 - Added default support to .choose(). Closes #41
- Fixed the choice example
- Fixed
password()
for recent nodes. Closes #36
- Added sub-command option support [itay]
- Fixed custom help ordering. Closes #32
- Added travis support
- Fixed: line-buffered input automatically trimmed. Closes #31
- Removed listening for "close" on --help
- Added support for
--
. Closes #24
- Fixed: wait for close event when writing help info [Jerry Hamlet]
- Fixed long flag definitions with values [felixge]
- Changed
--version
short flag to-V
from-v
- Changed
.version()
so it's configurable [felixge]
- Added support for long flags only. Closes #18
- "node": ">= 0.4.x < 0.7.0". Closes #20
- Allow for defaults that are not just boolean. Default peassignment only occurs for --no-*, optional, and required arguments. [Jim Isaacs]
- Added support for custom
--help
output
- Changed: when the user enters nothing prompt for password again
- Fixed issue with passwords beginning with numbers [NuckChorris]
- Fixed
Commander#args
- Added default option value support
- Added mask support to
Command#password(str[, mask], fn)
- Added
Command#password(str, fn)
- Initial release