简介
cm(Commander)是一个轻量级的Node.js命令行界面(CLI)工具,可帮助我们以一种更简洁和优雅的方式实现命令行界面的功能。即使没有什么NodeJS经验,使用cm也非常简单。
安装
cm包安装非常简单,我们只需要在命令行中使用npm安装即可:
--- ------- ---------
基础命令
要创建一个简单的命令行界面,我们可以通过以下方式定义基础命令:
----- - ------- - - --------------------- ----- ------- - --- ---------- ------- ----------------- ------------------ -- -- ------- ---- ----------- ---------------------
version()
用于定义版本。description()
定义命令行的描述。parse()
用于解析命令行参数并执行该命令。
运行node app --version
即可查看版本号。
参数
让我们看看如何添加参数到我们的命令行:
------- --------------- -------- -------------------- - -------- ---- - ----- ------ -------------- -- - ------------------ ---------- ---
command()
是定义命令行的常用方法,就像上面的hello。<name>
是必需的参数,尖括号表示必需。description()
定义参数的描述。
运行node app hello John
,输出Hello John
。
选项
现在,我们来看一下如何为我们的命令添加选项:
------- ------------ ------ ------------ ------- ---- ------ --------------- -------- -------------------- - -------- ---- - ----- ------ -------------- -- - ----- -------- - ------------ -- -------------- ------------------ -------- ----- ------ -- -------------- ---
option()
是定义选项的常用方法。-f, --file
是指定选项的简写和全称。<filename>
是选项的值,可以使用program.file
获取它。write output to ${filename}
是输出选项值。
运行node app hello John --file output.txt
,输出Hello John, write output to output.txt
。
高级定义
在实施复杂命令时,可以采用链式编程方法,使用更丰富的选项以及像下面这样的子命令:
------- ------------ --------- ------- ----- ----------- --------------- -------- --------------- ------------------- - ---------- ---- - ----- ------- ----------- ------------ -------- ---------- ------- -- -- -------- ---------------- ------------ - ------ ------ -- -- - ------------------ ------- --------- ---------------------- -------- --------------------------- ------------- ---------------------- -------- -- ------- ------------------ ----- ---
clone
是带有子命令的主命令。<source>
是必需的参数。[destination]
是可选的参数。方括号表示可选。-b, --branch
是允许克隆不同分支的选项。action
是命令将执行的操作。
运行node app clone repo.git dest -b branch --debug
,输出:
----- ------- ------ ------- -------- ------------ ---- ------- ------ ----- --
结论
cm是一个非常好的Node.js库,可以尽可能地简化您的控制台界面代码。使用任何库时,应该思考其实际用途并尽可能少地实施它,同时应当注意与其他库的兼容性以及与您的框架的兼容性。仅仅依靠一种库并不意味着你得到了一切 - 您的实现应该仅是提供用于您的应用程序的最佳工具之一。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/77934