我们如果要开发一个cli工具,通常需要获取用户输入的参数,这些参数存储在Deno.args中。 可以用官方的解析来方便我们开发:
import { parse } from "https://deno.land/std/flags/mod.ts";
const serverArgs = parse(Deno.args);
console.log(serverArgs);
假设这个文件是test.ts,我们执行命令:
deno run test.ts aa --name bb cc --age dd -E gg -H
得到以下:
{ _: [ "aa", "cc" ], name: "bb", age: "dd", E: "gg", H: true }
解析规则也很好理解
- 不带-的,视为单独的参数,放在_对应的数组里
- 带-的,看是否结对,单独一个的话值是true,否则就是具体值
- -最多为2个,否则也只按1个来
我们在使用别人的脚手架的时候,会发现通常有一种别名的使用,比如npm i与npm install是一个意思。 这个在parse的第二个参数中也能很方便地配置。
这是一个样例,下面将success与S等价,有默认值false,parse时会直接解析成bool值。
import { parse, ArgParsingOptions } from "https://deno.land/std/flags/mod.ts";
const options: ArgParsingOptions = {
string: ["name"],
boolean: ["success", "verbose"],
alias: {
success: "S",
verbose: "v",
},
default: {
name: "world",
success: false,
verbose: false,
},
};
export interface Params {
_: string[];
success: boolean;
verbose: string;
name: string;
}
const args = parse(Deno.args, options) as Params;
console.log(`Hello, ${args.name}!`);
if (args.success) {
console.log("Operation succeeded.");
}
if (args.verbose) {
console.log("Running in verbose mode.");
}