好多nodejs包都提供命令行工具。咱也来学学吧。html
环境:
win32_X86
nodejs: v5.9.1
npm: 3.7.3
首先建立个bat文件(cli-demo.bat),bat文件中调用node命令执行相应的js文件(index.js):
index.js内容:node
'use strict'; function add(args) { var sum = 0; args.forEach(function(number){ var num = +number; if(!isNaN(num)){ sum += +num; } }) return sum; } var args = process.argv.slice(2); // 处理参数 var sum = add(args); console.log(sum);
cli-demo.bat内容(index.js相同目录):shell
@ECHO OFF SETLOCAL SET "NODE_EXE=%~dp0\node.exe" IF NOT EXIST "%NODE_EXE%" ( SET "NODE_EXE=node" :: ) :: 执行指定的js,并传入参数 "%NODE_EXE%" "index.js" %*
而后把bat文件路径添加到PATH环境变量中。
在index.js父目录下打开cmd,并执行:npm
建立bat文件,把bat路径添加到PATH中过程是复杂了点,还好npm能够帮咱们作这些事。json
先初始化个npm项目工具
【建立bat文件,把bat路径添加到PATH中】这些固定的工做能够由npm帮咱们完成。package.json中有个bin字段配置:post
bin: { "commandName1": "path/to/executableFile1", // 路径相对于package.json的目录 "commandName2": "path/to/executableFile2", }
可执行文件能够是js文件或者无扩展名的文本文件,而且文件开头第一行是"#!/usr/bin/env node"。在安装包时npm就会根据bin配置生成对应的脚本(bat 或者 shell)。若是可执行文件的第一行不是"#!/usr/bin/env node",则生成的脚本文件只是简单的指向bin配置的可执行文件。spa
Step1:建立package.json文件,并配置bin字段。命令行
package.json:unix
"bin":{ "cli-demo": "./bin/cli-demo" }
Step2:在和package.json相同的目录下建立bin目录,在bin目录中添加cli-demo文本文件。
./bin/cli-demo:
#!/usr/bin/env node console.log('heheh');
Step3:发布包(前提在控制台登陆npm帐户)
npm login npm publish
若是没有报错提示的化,那就说明发布包成功了,接下来就能够被其余人引用了。
Step4:安装包
npm i -g cli-demo
查看下安装目录中生成的脚本文件:cli-demo.bat
@IF EXIST "%~dp0\node.exe" ( "%~dp0\node.exe" "%~dp0\node_modules\cli-demo\bin\cli-demo" %* ) ELSE ( @SETLOCAL @SET PATHEXT=%PATHEXT:;.JS;=;% node "%~dp0\node_modules\cli-demo\bin\cli-demo" %* )
文件内容就是调用node执行bin配置的文件。
Step5:执行命令
cli-demo
A:根据bin字段配置,生成脚本文件(bat for window, shell for unix)。
脚本名称:等于bin字段的属性名字 脚本内容:调用node名字执行bin字段对象属性值指定的文件
B:把生产的脚本文件放在指定目录中
全局安装:prefix/ 本地安装:./node_module/.bin/
通常一个命令由三部分构成:命令名称 选项 参数。
命名名称:指定运行的命名
选项:修改命令的操做行为
参数:传给命令运行的参数
处理选项和参数能够使用其余库,如CommandJS。