node命令行工具开发NodeJs有很多命令行工具。它们是全局安装的,并提供一个命令供我们使用来完成相应的功能。下面我们将使用node开发一个实用的命令行小工具1.最简单的命令行工具初步探索1.首先我们新建一个目录,然后执行npminit生成一个package.json文件2.创建一个新建bin目录并在该目录下新建一个目录Createahi.js#!/usr/bin/envnodeconsole.log("hi")执行nodehi.js,我们可以看到终端输出'hi'。.当然,这不是我们想要的命令行工具,我们需要直接运行hi,结果会出现3。现在我们告诉npm是哪个可执行文件,在package.json中添加如下信息:"bin":{"hi":"bin/hi.js"}npmlink现在我们执行npmlink开启命令行,现在尝试在终端直接输入hi命令,这次可以看到如愿以偿的结果了。处理参数命令行参数可以通过系统变量process.argv获取。process.argv返回一个数组。第一个是node,第二个是脚本文件,第三个是入参。Process.argv[2]开始获取真实参数部分#!/usr/bin/envnodeletargv=process.argv.slice(2)letyourName=argv[0]console.log(`hi,${yourName}!`)//执行hiliu//hi,liu!Commander.js对于参数的处理,我们一般使用Commander,commander是一个轻量级的nodejs模块,为用户命令行输入和参数解析提供了强大的功能,比如:自录代码、自动生成帮助、合并短参数(《ABC》"=="-A-B-C"),默认选项,强制选项,命令解析,提示$npminstallcommander--save#!/usr/bin/envnode/***模块依赖。*/varprogram=require('commander')program.version('0.0.1').option('-p,--peppers','Addpeppers').option('-P,--pineapple','添加菠萝').option('-b,--bbq-sauce','添加烧烤酱').option('-c,--cheese[type]','添加指定类型的奶酪[marble]','marble').parse(process.argv)console.log('你点了一份披萨:')if(program.peppers)console.log('-peppers')if(program.pineapple)console.log('-菠萝')if(program.bbqSauce)console.log('-bbq')console.log('-%scheese',program.cheese)CommanderAPIOption():初始化自定义参数对象,设置“关键字”和“描述”Command():初始化命令行参数对象,直接获取命令行输入Command#command():定义一个命令名Command#action():注册一个回调函数Command#option():定义参数需要设置“Keyword”和“Description”。做一个分隔线Command#parse():解析命令行参数argvCommand#description():设置描述值Command#usage():设置使用值更多参考Commander官网除了Commander,yargs也是一个优秀的命令行参数处理模块二、开发命令行翻译工具1、创建并初始化项目新建文件夹translator/进入目录,执行npminit生成package.json文件npminstallcommandersuperagentcli-table2--savecli-table2命令行表输出superagent用于http请求新建bin/translator.js文件,在package.json文件中添加"bin":{"translator":"bin/translator.js"},然后npmlink这里我们将使用有道API一切准备就绪,我们可以开始编码了2.编码由于代码量很少,这里直接贴代码,并在代码中注释说明#!/usr/bin/envnode//导入需要的模块constprogram=require('commander')constTable=require('cli-table2')//表输出constsuperagent=require('superagent')//http请求//初始化commanderprogram.allowUnknownOption().version('0.0.1').usage('translator
