资讯专栏INFORMATION COLUMN

CLI生成帮助库的工具

molyzzx / 2639人阅读

摘要:均可用于为命令行工具生成帮助库。的执行结果返回一个对象。可选根据生成帮助文本参数是否显示的指定数据去覆盖和文本将改变的文本内容改为生成的帮助文本为指定的生成拓展的帮助文本。是在帮助文本中放置在之前的可选字符串。特殊的用于打印帮助信息

Optionator, Commander均可用于为Node命令行工具(CLI)生成帮助库。

源码:https://github.com/cuizhirong...

Optionator

Optionator是一个JavaScript选项解析和帮助生成库。

npm install optionator

require("optionator")返回一个function,一个VERSION参数(optionator的版本)。
function接收一个对象参数,参数中包含配置信息。function的执行结果返回一个对象。

  var optionator = require("optionator")({
    prepend: "Usage: cmd [options]",
    append: "Version 1.0.1",
    options: [{
      option: "help",
      alias: "h",
      type: "Boolean",
      description: "displays help"
    }, {
      option: "count",
      alias: "c",
      type: "Int",
      description: "number of things",
      longDescription: "text longDescription",
      example: "cmd --count 2"
    }]
  });
  const options = optionator.parseArgv(process.argv);

  if (options.help) {
    console.log(optionator.generateHelp());
  }

parse(input, parseOptions)
根据settings处理输入,并返回包含结果的对象。

参数:
input-想要解析的内容
parseOptions-Int型,表示input是数组还是字符串,默认0是字符串,2是数组

returns:解析后的对象

parseArgv(input)
parseArgv和parse相似,但是parseArgv只接收数组,切掉前两个元素。

  parseArgv(process.argv)

generateHelp(helpOptions(可选))
根据settings生成帮助文本

参数:
helpOptions{showHidden: Boolean, interpolate: Object}
showHidden: 是否显示hidden的option
interpolate: 指定数据去覆盖prependappend文本

//将改变append的文本内容:Version {{version}} 改为 Version 0.4.2
generateHelp({interpolate: {version: "0.4.2"}}) 

return: String-生成的帮助文本

generateHelpForOption(optionName)
为指定的optionName生成拓展的帮助文本。如果option有example,则会显示这个example。如果指定了longDescription,它将显示longDescription而不显示Description。

generateHelpForOption("count");

Settings格式

prepend: 是在帮助文本中放置在options之前的可选字符串。

append: 是在帮助文本中放置在options之前的可选字符串。

options: 配置信息的数组

helpStyle: 对象,改变一些默认样式

Options格式

option(必须) 名字

alias(可选) 缩写

type(必须) 类型,被用作验证输入值

description(可选) 介绍

example(可选) option的例子-当generateHelpForOption被调用的时候才会打印

required(可选) 设置为true时,如果没有定义这个参数打印将会失败

Commander

提供了用户命令行输入和参数解析的强大功能。

npm install commander --save
#! /usr/bin/env node

var program = require("commander");

program
  .version("0.0.1")
  .option("-p, --pepprs", "Add peppers", function() { console.log("-p, --pepprs callback"); })
  .option("-b, --bbq-sauce", "Add bbq sauce")
  .option("-c | --control-thing", "Add ct")
  .parse(process.argv);

if (program.controlThing) console.log("  - cttt");
OptionsCommander中通过.option()定义。例子中解析了来自process.argv的参数和options(--help默认添加)

option()接收四个参数;

第一个参数是option名称,"short option, long option" 或者写成 "short option | long option"; long option中多个单词组成的,比如--template-engine将被解析成驼峰式命名templateEngine; 在short/long option之后还可以指定参数(必填参数, [db]可选参数)

第二个参数是option的描述;
第三个参数是回调函数;
第四个参数是回调函数默认值。

对于未定义的option,程序会抛出错误,如下图的第一条命令; Commander的解决方法是提供方法.allowUnknownOption(), 直接退出取消这个自动报错机制, 如下图的第二条命令。

Command-特殊的options
program
  .command("rm ")
  .option("-r, --recursive ", "Remove recursively")
  .action(function (dir, cmd) {
    console.log("dir " + dir + " cmd " + cmd);
  });

.outputHelp(cb) .help(cb)用于打印帮助信息

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/96535.html

相关文章

  • 构建一个用于创建组件库的项目脚手架工具(类 Vue-cli3)

    摘要:比如一个模板用于创建的组件库,一个模板用于创建的组件库,还有一个模板用于创建的工具函数类库。 缘起 最近公司内部想搭建一个私有的 npm 仓库,用于将平时用到次数相当频繁的工具或者组件独立出来,方便单独管理,随着项目的规模变大,数量变多,单纯的复制粘粘无疑在优雅以及实用性上都无法满足我们的需求,所以进一步模块化是必然的。 但是一个组件库的建立其实是一个非常麻烦的过程,基础 webpac...

    CompileYouth 评论0 收藏0
  • 使用karma+mocha+chai+sinon+@vue/test-utils为你的组件库增加单元

    摘要:但是,项目中的一些公共封装,比如公共的组件公用的功能模块等是可以使用单元测试的。因此特为组件库引入单元测试,目的在于能减少组件的,避免重复的发布不必要的包。 项目github地址:https://github.com/yuanalina/installAsRequired这里必须要提前说明,前端项目的单元测试不是必须的,特别是业务型项目,增加单元测试反而会成为累赘,增加开发成本且无意义...

    happen 评论0 收藏0
  • webpack4.x升级摘要

    摘要:以为例,编写来帮助我们完成重复的工作编译压缩我只要执行一下就可以检测到文件的变化,然后为你执行一系列的自动化操作,同样的操作也发生在这些的预处理器上。的使用是针对第三方类库使用各种模块化写法以及语法。 showImg(https://segmentfault.com/img/bVbtZYK); 一:前端工程化的发展 很久以前,互联网行业有个职位叫做 软件开发工程师 在那个时代,大家可能...

    levinit 评论0 收藏0
  • Angular 5.0 来了! 有这些大变化

    摘要:以下简单介绍的重大变化。状态转交及对的支持这样更便于在服务端和客户之间共享应用状态。状态转交的相关文档几周后会发布。我们删除很多以前废弃的如,也公布了一些新的废弃项。以上指南会详细介绍这些变更。已知问题当前已知与相关的问题。 我们很高兴地宣布Angular 5.0.0——五角形甜甜圈发布啦!这又是一个主版本,包含新功能并修复了很多bug。它再次体现了我们把Angular做得更小、更快、...

    张红新 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<