node.js write command line
1. Create command file
hello.js
#!/usr/bin/env node
console.log(`hello world`);
2. Modify package.json
Add configuration
{
......
"bin": {
"hello": "scripts/hello.js"
},
......
}
Local testing needs to execute the command:
npm link
test:
hello
3. Handling command line arguments
#!/usr/bin/env node
console.log(`hello ${
process.argv[2]}`);
console.log('process.argv:', process.argv);
4. Commander processing parameters
Version 8.1.0
introduces dependencies:
const program = require('commander');
4.1 option
function myParseInt(value, other) {
return parseInt(value);
}
program
.version('0.0.1', '-v, --version')
.option('-p --port <port>', '端口号', myParseInt, 8080)
.parse(process.argv);
const options = program.opts();
console.log('port: %j', options.port);
4.1.1 Mutable variables
program
.version('0.0.1', '-v, --version')
.option('-p --port <port>', '端口号', myParseInt, 8080)
.option('-m --many [vars...]', '可变变量')
.parse(process.argv);
const options = program.opts();
console.log('options', options);
4.1.2 Required options
.requiredOption() configuration format is the same as option.
program
.version('0.0.1', '-v, --version')
.option('-p --port <port>', '端口号', myParseInt, 8080)
.option('-m --many [vars...]', '可变变量')
.requiredOption('-r --require [r]', '-r必须存在,不存在会报错')
.parse(process.argv);
const options = program.opts();
console.log('options', options);
Error:
Normal:
4.1.3 no- prefix
no-option can set option to false.
program
.version('0.0.1', '-v, --version')
.option('-p --port <port>', '端口号', myParseInt, 8080)
.option('-m --many [vars...]', '可变变量')
.requiredOption('-r --require [r]', '-f必须存在,不存在会报错', '99')
.option('-s --sauce [sauce]', '测试no-前缀,sauce可以使布尔类型也可以是值类型,也可以有默认值','300g')
.option('--no-sauce', '配置sauce前缀,将sauce的值设置为false')
.parse(process.argv);
const options = program.opts();
console.log('options', options);
Reference address:
commonder: https://segmentfault.com/a/1190000019350684