可以跑一下下面代码
读取传入的各类参数,例如: --help, -v=123
逻辑措置惩罚惩罚和友好的 UI 交互,例如:供给列表选择
细致控制字体颜色和配景颜色
状态显示,例如:期待过程前面是转圈圈,完成过程前面自动换成对号
在开始前,安置一下需要用到的库:
npm install --save inquirer npm install --save commander npm install --save inquirer npm install --save ora下面的四个文件例子只需复制粘贴到文件通过node.js即可运行
读取参数: commander这里用到的是 commander 这个库。它的文档地点是:https://www.npmjs.com/package/commander
请先看下面代码:
const program = require("commander"); // 分为2种操纵, 2种操纵互相斗嘴 // Options 操纵 program .version("0.0.1") .option("-t, --types [type]", "test options") // option这句话必需加 .parse(process.argv); // Commands 操纵 program // 命令与参数: <> 必填; [] 选填 .command("exec <cmd> [env]") // 别号 .alias("ex") // 辅佐信息 .description("execute the given remote cmd") // 没用,option和command是斗嘴的 .option("-e, --exec_mode <mode>", "Which exec mode to use") // 执行的操纵 .action((cmd, env, options) => { // 参数可以拿到 console.log(`env is ${env}`); console.log('exec "%s" using %s mode', cmd, options.exec_mode); }) // 自界说help信息 .on("--help", function() { console.log("自界说help信息"); }); // 参数长度不够, 打印辅佐信息 if (!process.argv.slice(2).length) { program.outputHelp(); } if (program.types) { console.log(program.types); } // 解析命令行参数 program.parse(process.argv);文档上根基都写大白了,但是有几个需要注意的点:
它主要供给 options 和 commands 两种操纵,option 就是形如“-t,--types”这样的传参,commands 就是形如“exec”这样的传参。 不要混用两者?。
读取 commands 中传入的参数,写在 .action? 中;读取 options 传入的参数,是通过访谒 program? 上的变量。除此之外,options 操纵需要执行 ?.parse(process.argv) 解析命令行参数
-V? 和 -h? 默认也是供给的,,但是也可以通过自界说笼罩
一般都把 options 写在前面, 趁便标识版本号?;把 commands 写在后面;最后会判断一下参数长度,不够会自动输出打印信息
交互验证:inquirer深入交互并且供给基于命令行的选择列表、弹框等 UI 视图,我们借助:inquirer 库。它的文档地点是:https://www.npmjs.com/package/inquirer
请看下面这段代码:
const inquirer = require("inquirer"); const program = require("commander"); program .version("1.0.0") .option("--sass [sass]", "启用sass") .option("--less", "启用less") .parse(process.argv); program .command("module [moduleName]") .alias("m") .description("创建新模块") .action(option => { console.log(`option is ${option}`); console.log(`program.sass is ${program.sass}`); const config = { moduleName: null, des: "", sass: false, less: false }; const promps = []; // type: input // 问答框类型 if (config.moduleName !== "string") { promps.push({ type: "input", name: "moduleName", message: "请输入模块名称", validate: function(input) { if (!input) { return "输入不能为空"; } return true; } }); } // type: list // 列表选择器类型 if (!program.sass && !program.less) { promps.push({ type: "list", name: "cssPretreatment", message: "想用什么css预措置惩罚惩罚器呢", choices: [ { name: "Sass", value: "sass" }, { name: "Less", value: "less" } ] }); } inquirer.prompt(promps).then(function(answers) { console.log(answers); }); }); program.parse(process.argv);撤除 commader 库的应用,inquirer 库的应用在 15~64 行。它首先会验证是否传入 module 参数,如果没有,那么以问答的形式引导用户输入;紧接着查抄是否指定了 scss / less,如果没有指定,弹出列表选择器供用户选择。
整个过程中的交互体验还长短常好的,尤其是针对多个选项的时候的列表选择器,一目了然。
颜色控制:chalk这个对照简单,写过 c 的同学应该知道控制命令行颜色,只需要 颜色宏界说 + 字体内容 拼接即可。所以这个库也是,供给更语义化的 api 将文本措置惩罚惩罚成拼接后的功效,然后交给控制台输出。
const chalk = require("chalk"); const print = console.log; print(chalk.blue("Hello") + " World" + chalk.red("!")); print(chalk.blue.bgRed.bold("Hello World!")); 过程控制:ora温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/32625.html
- 上一篇:PHP 三大布局
- 下一篇:前面的路径是解压出来的文件夹的路径