qed*_*qed 6 node.js typescript yargs
这是我尝试过的(代码改编自yargs github自述文件中示例的代码):
// main.ts
import {Argv} from "yargs";
console.info(`CLI starter.`);
function serve(port: string) {
console.info(`Serve on port ${port}.`);
}
require('yargs')
.command('serve', "Start the server.", (yargs: Argv) => {
yargs.option('port', {
describe: "Port to bind on",
default: "5000",
}).option('verbose', {
alias: 'v',
default: false,
})
}, (args: any) => {
if (args.verbose) {
console.info("Starting the server...");
}
serve(args.port);
}).argv;
Run Code Online (Sandbox Code Playgroud)
结果:
npm run-script build; node build/main.js --port=432 --verbose
> typescript-cli-starter@0.0.1 build /Users/kaiyin/WebstormProjects/typescript-cli-starter
> tsc -p .
CLI starter.
Run Code Online (Sandbox Code Playgroud)
看起来yargs在这里没有任何作用。
任何想法如何使它工作?
我根据yargs github自述文件中的示例改编了代码,事实证明这并不意味着要成为一个完整的示例。¯_(?)_ /¯
无论如何,我想出了办法:
#!/usr/bin/env node
import * as yargs from 'yargs'
import {Argv} from "yargs";
let argv = yargs
.command('serve', "Start the server.", (yargs: Argv) => {
return yargs.option('port', {
describe: "Port to bind on",
default: "5000",
}).option('verbose', {
alias: 'v',
default: false,
})
}).argv;
if (argv.verbose) {
console.info("Verbose mode on.");
}
serve(argv.port);
function serve(port: string) {
console.info(`Serve on port ${port}.`);
}
Run Code Online (Sandbox Code Playgroud)
您可以在typescript-cli-starter这里找到完整的仓库:https : //github.com/kindlychung/typescript-cli-starter
一个简约的例子
import * as yargs from 'yargs'
let args = yargs
.option('input', {
alias: 'i',
demand: true
})
.option('year', {
alias: 'y',
description: "Year number",
demand: true
}).argv;
console.log(JSON.stringify(args));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6279 次 |
| 最近记录: |