commander入门
commander
参数演示
js
#!/usr/bin/env node
const commander = require('commander')
const pkg = require('../package.json')
const { program } = commander;
// 创建一个新的实例
// const program = new commander.Command();
program
.name(Object.keys(pkg.bin)[0])
.usage('<command> [options]')
.version(pkg.version)
.option('-d, --debug', '是否开启调试模式', false)
.option('-e, --envName <envName>', '获取环境变量名称');
// command 注册的是当前脚手架下的命令
const clone = program.command('clone <source> [destination]');
clone
.description('clone a repository')
.option('-f, --force', '是否强制拷贝')
.action((source, destination, cmdObj) => {
console.log('do clone', source, destination, cmdObj.force)
})
// addCommand 注册子命令
const service = new commander.Command('service')
service
.command('start [port]')
.description('start service at some port')
.action((port) => {
console.log('do service start', port)
})
service
.command('stop')
.description('stop service')
.action(() => {
console.log('do service stop')
})
program.addCommand(service)
// test-cli install -> vue
program
.command('install [name]', 'install packages', {
executableFile: 'vue',
isDefault: true, // 默认执行
hidden: true // 控制台是否隐藏
})
.alias('i');
program
.arguments('<cmd> [options]')
.description('test command', {
cmd: 'command to run',
options: 'options for command'
})
.action(function (cmd, options) {
console.log(cmd, options)
})
program.parse(process.argv);
// console.log(program._optionValues.debug);
// console.log(program._optionValues.env);