github tj/commander.js v13.0.0-0

pre-release5 days ago

Added

  • style routines like styleTitle() to add color to help using .configureHelp() or Help subclass (#2251)
  • color related support in .configureOutput() for getOutHasColors(), getErrHasColors(), and stripColor() (#2251)
  • Help property for minWidthToWrap (#2251)
  • Help methods for displayWidth(), boxWrap(), preformatted() et al (#2251)

Changed

  • Breaking: excess command-arguments cause an error by default, see migration tips (#2223)
  • Breaking: throw during Option construction for unsupported option flags, like multiple characters after single - (#2270)
  • TypeScript: include implicit this in parameters for action handler callback (#2197)

Deleted

  • Breaking: Help.wrap() refactored into formatItem() and boxWrap() (#2251)

Migration Tips

Excess command-arguments

It is now an error for the user to specify more command-arguments than are expected. (allowExcessArguments is now false by default.)

Old code:

program.option('-p, --port <number>', 'port number');
program.action((options) => {
  console.log(program.args);
});

Now shows an error:

$ node example.js a b c
error: too many arguments. Expected 0 arguments but got 3.

You can declare the expected arguments. The help will then be more accurate too. Note that declaring
new arguments will change what is passed to the action handler.

program.option('-p, --port <number>', 'port number');
program.argument('[args...]', 'remote command and arguments'); // expecting zero or more arguments
program.action((args, options) => {
  console.log(args);
});

Or you could suppress the error, useful for minimising changes in legacy code.

program.option('-p, --port', 'port number');
program.allowExcessArguments();
program.action((options) => {
  console.log(program.args);
});

Don't miss a new commander.js release

NewReleases is sending notifications on new releases.