好多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。