摘要:均可用于為命令行工具生成幫助庫(kù)。的執(zhí)行結(jié)果返回一個(gè)對(duì)象。可選根據(jù)生成幫助文本參數(shù)是否顯示的指定數(shù)據(jù)去覆蓋和文本將改變的文本內(nèi)容改為生成的幫助文本為指定的生成拓展的幫助文本。是在幫助文本中放置在之前的可選字符串。特殊的用于打印幫助信息
Optionator, Commander均可用于為Node命令行工具(CLI)生成幫助庫(kù)。
源碼:https://github.com/cuizhirong...
OptionatorOptionator是一個(gè)JavaScript選項(xiàng)解析和幫助生成庫(kù)。
npm install optionator
require("optionator")返回一個(gè)function,一個(gè)VERSION參數(shù)(optionator的版本)。
function接收一個(gè)對(duì)象參數(shù),參數(shù)中包含配置信息。function的執(zhí)行結(jié)果返回一個(gè)對(duì)象。
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)
根據(jù)settings處理輸入,并返回包含結(jié)果的對(duì)象。
參數(shù):
input-想要解析的內(nèi)容
parseOptions-Int型,表示input是數(shù)組還是字符串,默認(rèn)0是字符串,2是數(shù)組
returns:解析后的對(duì)象
parseArgv(input)
parseArgv和parse相似,但是parseArgv只接收數(shù)組,切掉前兩個(gè)元素。
parseArgv(process.argv)
generateHelp(helpOptions(可選))
根據(jù)settings生成幫助文本
參數(shù):
helpOptions{showHidden: Boolean, interpolate: Object}
showHidden: 是否顯示hidden的option
interpolate: 指定數(shù)據(jù)去覆蓋prepend和append文本
//將改變append的文本內(nèi)容:Version {{version}} 改為 Version 0.4.2 generateHelp({interpolate: {version: "0.4.2"}})
return: String-生成的幫助文本
generateHelpForOption(optionName)
為指定的optionName生成拓展的幫助文本。如果option有example,則會(huì)顯示這個(gè)example。如果指定了longDescription,它將顯示longDescription而不顯示Description。
generateHelpForOption("count");
Settings格式
prepend: 是在幫助文本中放置在options之前的可選字符串。
append: 是在幫助文本中放置在options之前的可選字符串。
options: 配置信息的數(shù)組
helpStyle: 對(duì)象,改變一些默認(rèn)樣式
Options格式
option(必須) 名字
alias(可選) 縮寫
type(必須) 類型,被用作驗(yàn)證輸入值
description(可選) 介紹
example(可選) option的例子-當(dāng)generateHelpForOption被調(diào)用的時(shí)候才會(huì)打印
required(可選) 設(shè)置為true時(shí),如果沒(méi)有定義這個(gè)參數(shù)打印將會(huì)失敗
Commander提供了用戶命令行輸入和參數(shù)解析的強(qiáng)大功能。
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");
Options在Commander中通過(guò).option()定義。例子中解析了來(lái)自process.argv的參數(shù)和options(--help默認(rèn)添加)
option()接收四個(gè)參數(shù);
第一個(gè)參數(shù)是option名稱,"short option, long option" 或者寫成 "short option | long option"; long option中多個(gè)單詞組成的,比如--template-engine將被解析成駝峰式命名templateEngine; 在short/long option之后還可以指定參數(shù)(
第二個(gè)參數(shù)是option的描述;
第三個(gè)參數(shù)是回調(diào)函數(shù);
第四個(gè)參數(shù)是回調(diào)函數(shù)默認(rèn)值。
對(duì)于未定義的option,程序會(huì)拋出錯(cuò)誤,如下圖的第一條命令; Commander的解決方法是提供方法.allowUnknownOption(), 直接退出取消這個(gè)自動(dòng)報(bào)錯(cuò)機(jī)制, 如下圖的第二條命令。
Command-特殊的options
program .command("rm") .option("-r, --recursive ", "Remove recursively") .action(function (dir, cmd) { console.log("dir " + dir + " cmd " + cmd); });
.outputHelp(cb) .help(cb)用于打印幫助信息
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/96535.html
摘要:比如一個(gè)模板用于創(chuàng)建的組件庫(kù),一個(gè)模板用于創(chuàng)建的組件庫(kù),還有一個(gè)模板用于創(chuàng)建的工具函數(shù)類庫(kù)。 緣起 最近公司內(nèi)部想搭建一個(gè)私有的 npm 倉(cāng)庫(kù),用于將平時(shí)用到次數(shù)相當(dāng)頻繁的工具或者組件獨(dú)立出來(lái),方便單獨(dú)管理,隨著項(xiàng)目的規(guī)模變大,數(shù)量變多,單純的復(fù)制粘粘無(wú)疑在優(yōu)雅以及實(shí)用性上都無(wú)法滿足我們的需求,所以進(jìn)一步模塊化是必然的。 但是一個(gè)組件庫(kù)的建立其實(shí)是一個(gè)非常麻煩的過(guò)程,基礎(chǔ) webpac...
摘要:但是,項(xiàng)目中的一些公共封裝,比如公共的組件公用的功能模塊等是可以使用單元測(cè)試的。因此特為組件庫(kù)引入單元測(cè)試,目的在于能減少組件的,避免重復(fù)的發(fā)布不必要的包。 項(xiàng)目github地址:https://github.com/yuanalina/installAsRequired這里必須要提前說(shuō)明,前端項(xiàng)目的單元測(cè)試不是必須的,特別是業(yè)務(wù)型項(xiàng)目,增加單元測(cè)試反而會(huì)成為累贅,增加開發(fā)成本且無(wú)意義...
摘要:以為例,編寫來(lái)幫助我們完成重復(fù)的工作編譯壓縮我只要執(zhí)行一下就可以檢測(cè)到文件的變化,然后為你執(zhí)行一系列的自動(dòng)化操作,同樣的操作也發(fā)生在這些的預(yù)處理器上。的使用是針對(duì)第三方類庫(kù)使用各種模塊化寫法以及語(yǔ)法。 showImg(https://segmentfault.com/img/bVbtZYK); 一:前端工程化的發(fā)展 很久以前,互聯(lián)網(wǎng)行業(yè)有個(gè)職位叫做 軟件開發(fā)工程師 在那個(gè)時(shí)代,大家可能...
摘要:以下簡(jiǎn)單介紹的重大變化。狀態(tài)轉(zhuǎn)交及對(duì)的支持這樣更便于在服務(wù)端和客戶之間共享應(yīng)用狀態(tài)。狀態(tài)轉(zhuǎn)交的相關(guān)文檔幾周后會(huì)發(fā)布。我們刪除很多以前廢棄的如,也公布了一些新的廢棄項(xiàng)。以上指南會(huì)詳細(xì)介紹這些變更。已知問(wèn)題當(dāng)前已知與相關(guān)的問(wèn)題。 我們很高興地宣布Angular 5.0.0——五角形甜甜圈發(fā)布啦!這又是一個(gè)主版本,包含新功能并修復(fù)了很多bug。它再次體現(xiàn)了我們把Angular做得更小、更快、...
閱讀 1963·2021-10-25 09:48
閱讀 2782·2021-09-22 14:59
閱讀 1755·2019-08-29 16:52
閱讀 854·2019-08-29 16:07
閱讀 2298·2019-08-29 12:38
閱讀 1751·2019-08-26 13:23
閱讀 875·2019-08-26 11:49
閱讀 3264·2019-08-26 10:56