You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

15 KiB

Changelog

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.1.1 (2020-02-02)

Fixed

  • TypeScript definition for .action() should include Promise for async (#1157)

4.1.0 (2020-01-06)

Added

  • two routines to change how option values are handled, and eliminate name clashes with command properties ([#933] #1102)
    • see storeOptionsAsProperties and passCommandToAction in README
  • .parseAsync to use instead of .parse if supply async action handlers (#806 #1118)

Fixed

  • Remove trailing blanks from wrapped help text (#1096)

Changed

  • update dependencies
  • extend security coverage for Commander 2.x to 2020-02-03
  • improvements to README
  • improvements to TypeScript definition documentation
  • move old versions out of main CHANGELOG
  • removed explicit use of ts-node in tests

4.0.1 (2019-11-12)

Fixed

  • display help when requested, even if there are missing required options (#1091)

4.0.0 (2019-11-02)

Added

  • automatically wrap and indent help descriptions for options and commands (#1051)
  • .exitOverride() allows override of calls to process.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

Changed

  • 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)

Fixed

  • 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
  • removed deprecated customFds option from call to child_process.spawn (#1052)
  • rework TypeScript declarations to bring all types into imported namespace (#1081)

Migration Tips

Testing for no arguments

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)

Fixed

  • Improve tracking of executable subcommands.

Changed

  • update development dependencies

3.0.2 (2019-09-27)

Fixed

  • Improve tracking of executable subcommands.

Changed

  • update development dependencies

3.0.1 (2019-08-30)

Added

  • .name and .usage to README (#1010)
  • Table of Contents to README (#1010)
  • TypeScript definition for executableFile in CommandOptions (#1028)

Changed

  • consistently use const rather than var in README (#1026)

Fixed

  • 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' })
  • 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
  • Add executable arguments to spawn in win32, for git-style executables (#611)
    • e.g. node --harmony myCommand.js clone
  • 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')
  • Add .helpOption(flags, description) routine to customise help flags and description (#963)
    • e.g. .helpOption('-e, --HELP', 'read more information')
  • Fix behavior of --no-* options (#795)
    • can now define both --foo and --no-foo
    • Breaking custom event listeners: --no-foo on cli now emits option:no-foo (previously option: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)
  • Increment inspector port for spawned subcommands (#991)
    • e.g. node --inspect myCommand.js clone

Migration Tips

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

3.0.0-0 Prerelease / 2019-07-28

(Released as 3.0.0)

2.20.0 / 2019-04-02

  • 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)

2.19.0 / 2018-10-02

  • Removed newline after Options and Commands headers (#864)
  • Bugfix - Error output (#862)
  • Fix to change default value to string (#856)

2.18.0 / 2018-09-07

  • Standardize help output (#853)
  • chmod 644 travis.yml (#851)
  • add support for execute typescript subcommand via ts-node (#849)

2.17.1 / 2018-08-07

  • Fix bug in command emit (#844)

2.17.0 / 2018-08-03

  • fixed newline output after help information (#833)
  • Fix to emit the action even without command (#778)
  • npm update (#823)

2.16.0 / 2018-06-29

  • 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)

2.15.0 / 2018-03-07

  • Update downloads badge to point to graph of downloads over time instead of duplicating link to npm
  • Arguments description

2.14.1 / 2018-02-07

  • Fix typing of help function

2.14.0 / 2018-02-05

  • 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

2.13.0 / 2018-01-09

  • 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

2.12.2 / 2017-11-28

  • fix: typings are not shipped

2.12.1 / 2017-11-23

  • Move @types/node to dev dependency

2.12.0 / 2017-11-22

  • 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

2.11.0 / 2017-07-03

  • 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

2.10.0 / 2017-06-19

  • 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

2.9.0 / 2015-10-13

  • 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

2.8.1 / 2015-04-22

  • Back out support multiline description Close #396 #397

2.8.0 / 2015-04-07

  • 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

2.7.1 / 2015-03-11

  • Revert #347 (fix collisions when option and first arg have same name) which causes a bug in #367.

2.7.0 / 2015-03-09

  • 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

2.6.0 / 2014-12-30

  • added Command#allowUnknownOption method. Close #138 #318 @doozr @zhiyelee
  • Add application description to the help msg. Close #112 @dalssoft

2.5.1 / 2014-12-15

  • fixed two bugs incurred by variadic arguments. Close #291 @Quentin01 #302 @zhiyelee

2.5.0 / 2014-10-24

  • add support for variadic arguments. Closes #277 @whitlockjc

2.4.0 / 2014-10-17

  • 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 doesnt honor option terminator. Closes #216 @abbr

2.3.0 / 2014-07-16

  • add command alias'. Closes PR #210
  • fix: Typos. Closes #99
  • fix: Unused fs module. Closes #217

2.2.0 / 2014-03-29

  • 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.

2.1.0 / 2013-11-21

  • add: allow cflag style option params, unit test, fixes #174

2.0.0 / 2013-07-18

  • remove input methods (.prompt, .confirm, etc)

Older versions