These features are deprecated, which means they may go away in a future major version of Commander. They are currently still available for backwards compatibility, but should not be used in new code.
- Deprecated
- RegExp .option() parameter
- noHelp
- Callback to .help() and .outputHelp()
- .on('--help')
- .on('command:*')
- .command('*')
- cmd.description(cmdDescription, argDescriptions)
- InvalidOptionArgumentError
- Short option flag longer than a single character
- Import from
commander/esm.mjs - cmd._args
- .addHelpCommand(string|boolean|undefined)
- Removed
The .option() method allowed a RegExp as the third parameter to restrict what values were accepted.
program.option('-c,--coffee <type>', 'coffee', /short-white|long-black/);Removed from README in Commander v3. Deprecated from Commander v7.
The newer functionality is the Option .choices() method, or using a custom option processing function.
This was an option passed to .command() to hide the command from the built-in help:
program.command('example', 'example command', { noHelp: true });The option was renamed hidden in Commander v5.1. Deprecated from Commander v7.
These routines allowed a callback parameter to process the built-in help before display.
program.outputHelp((text) => {
return colors.red(text);
});The newer approach is to directly access the built-in help text using .helpInformation().
console.error(colors.red(program.helpInformation()));Deprecated from Commander v7.
This was the way to add custom help after the built-in help. From Commander v3.0.0 this used the custom long help option flags, if changed.
program.on('--help', function() {
console.log('')
console.log('Examples:');
console.log(' $ custom-help --help');
console.log(' $ custom-help -h');
});The replacement is .addHelpText():
program.addHelpText('after', `
Examples:
$ custom-help --help
$ custom-help -h`
);Deprecated from Commander v7.
This was emitted when the command argument did not match a known subcommand (as part of the implementation of .command('*')).
One use was for adding an error for an unknown subcommand. An error is now the default built-in behaviour.
A second related use was for making a suggestion for an unknown subcommand. The replacement built-in support is .showSuggestionAfterError(),
or for custom behaviour catch the commander.unknownCommand error.
Deprecated from Commander v8.3.
This was used to add a default command to the program.
program
.command('*')
.action(() => console.log('List files by default...'));You may now pass a configuration option of isDefault: true when adding a command, whether using a subcommand with an action handler or a stand-alone executable subcommand.
program
.command('list', { isDefault: true })
.action(() => console.log('List files by default...'));Removed from README in Commander v5. Deprecated from Commander v8.3.
This was used to add command argument descriptions for the help.
program
.command('price <book>')
.description('show price of book', {
book: 'ISBN number for book'
});The new approach is to use the .argument() method.
program
.command('price')
.description('show price of book')
.argument('<book>', 'ISBN number for book');Deprecated from Commander v8.
This was used for throwing an error from custom option processing, for a nice error message.
function myParseInt(value, dummyPrevious) {
// parseInt takes a string and a radix
const parsedValue = parseInt(value, 10);
if (isNaN(parsedValue)) {
throw new commander.InvalidOptionArgumentError('Not a number.');
}
return parsedValue;
}The replacement is InvalidArgumentError since can be used now for custom command-argument processing too.
function myParseInt(value, dummyPrevious) {
// parseInt takes a string and a radix
const parsedValue = parseInt(value, 10);
if (isNaN(parsedValue)) {
throw new commander.InvalidArgumentError('Not a number.');
}
return parsedValue;
}Deprecated from Commander v8.
Short option flags like -ws were never supported, but the old README did not make this clear. The README now states that short options are a single character.
README updated in Commander v3. Deprecated from Commander v9.
The first support for named imports required an explicit entry file.
import { Command } from 'commander/esm.mjs';This is no longer required, just import directly from the module.
import { Command } from 'commander';README updated in Commander v9. Deprecated from Commander v9.
This was always private, but was previously the only way to access the command Argument array.
const registeredArguments = program._args;The registered command arguments are now accessible via .registeredArguments.
const registeredArguments = program.registeredArguments;Deprecated from Commander v11.
This was originally used with a variety of parameters, but not by passing a Command object despite the "add" name.
program.addHelpCommand('assist [command]');
program.addHelpCommand('assist', 'show assistance');
program.addHelpCommand(false);In new code you configure the help command with .helpCommand(). Or use .addHelpCommand() which now takes a Command object, like .addCommand().
program.helpCommand('assist [command]');
program.helpCommand('assist', 'show assistance');
program.helpCommand(false);
program.addHelpCommand(new Command('assist').argument('[command]').description('show assistance'));The default import was a global Command object.
const program = require('commander');The global Command object is exported as program from Commander v5, or import the Command object.
const { program } = require('commander');
// or
const { Command } = require('commander');
const program = new Command()- Removed from README in Commander v5.
- Deprecated from Commander v7.
- Removed from TypeScript declarations in Commander v8.
- Removed from CommonJS in Commander v12. Deprecated and gone!