Skip to content

Releases: tj/commander.js

v12.0.0

03 Feb 09:46
Compare
Choose a tag to compare

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

19 Jan 20:17
Compare
Choose a tag to compare
v12.0.0-1 Pre-release
Pre-release

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

11 Nov 05:46
Compare
Choose a tag to compare
v12.0.0-0 Prerelease Pre-release
Pre-release

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

13 Oct 00:32
f1ae2db
Compare
Choose a tag to compare

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 on Command with the array of defined Argument (like Command.options for Option) (#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 as registeredArguments (#2010)

v11.0.0

16 Jun 00:50
Compare
Choose a tag to compare

Fixed

  • help command works when help option is disabled (#1864)

Changed

  • leading and trailing spaces are now ignored by the .arguments() method (#1874)
  • refine "types" exports for ESM to follow TypeScript guidelines (#1886)
  • Breaking: Commander 11 requires Node.js v16 or higher

v10.0.1

15 Apr 05:02
Compare
Choose a tag to compare

Added

Fixed

  • remove unused Option.optionFlags property from TypeScript definition (#1844)

Changed

  • assume boolean option intended if caller passes string instead of hash to .implies() (#1854)

v10.0.0

14 Jan 01:54
Compare
Choose a tag to compare

Added

  • wrap command description in help (#1804)

Changed

  • Breaking: Commander 10 requires Node.js v14 or higher

v9.5.0

07 Jan 07:07
Compare
Choose a tag to compare

Added

  • .getOptionValueSourceWithGlobals() (#1832)
  • showGlobalOptions for .configureHelp{} and Help (#1828)

v9.4.1

30 Sep 07:29
Compare
Choose a tag to compare

Fixed

  • .setOptionValue() now also clears option source (#1795)
  • TypeScript: add implied to OptionValueSource for option values set by using .implies() (#1794)
  • TypeScript : add undefined to return type of .getOptionValueSource() (#1794)

Changed

  • additions to README

v9.4.0

15 Jul 06:21
Compare
Choose a tag to compare

Added

  • preSubcommand hook called before direct subcommands (#1763)

Fixed

  • export InvalidOptionArgumentError in esm (#1756)

Changed

  • update dependencies (#1767)