使用 NodeJS 編寫(xiě)的東西,要么是一個(gè)包,要么是一個(gè)命令行程序,而前者最終也會(huì)用于開(kāi)發(fā)后者。因此我們?cè)诓渴鸫a時(shí)需要一些技巧,讓用戶(hù)覺(jué)得自己是在使用一個(gè)命令行程序。
例如我們用 NodeJS 寫(xiě)了個(gè)程序,可以把命令行參數(shù)原樣打印出來(lái)。該程序很簡(jiǎn)單,在主模塊內(nèi)實(shí)現(xiàn)了所有功能。并且寫(xiě)好后,我們把該程序部署在 /home/user/bin/node-echo.js 這個(gè)位置。為了在任何目錄下都能運(yùn)行該程序,我們需要使用以下終端命令。
$ node /home/user/bin/node-echo.js Hello World
Hello World
這種使用方式看起來(lái)不怎么像是一個(gè)命令行程序,下邊的才是我們期望的方式。
$ node-echo Hello World
在 Linux 系統(tǒng)下,我們可以把 JS 文件當(dāng)作 shell 腳本來(lái)運(yùn)行,從而達(dá)到上述目的,具體步驟如下:
在 shell 腳本中,可以通過(guò)#!注釋來(lái)指定當(dāng)前腳本使用的解析器。所以我們首先在 node-echo.js 文件頂部增加以下一行注釋?zhuān)砻鳟?dāng)前腳本使用 NodeJS 解析。
#! /usr/bin/env node
NodeJS 會(huì)忽略掉位于 JS 模塊首行的#!注釋?zhuān)槐負(fù)?dān)心這行注釋是非法語(yǔ)句。
然后,我們使用以下命令賦予 node-echo.js 文件執(zhí)行權(quán)限。
$ chmod +x /home/user/bin/node-echo.js
最后,我們?cè)?PATH 環(huán)境變量中指定的某個(gè)目錄下,例如在 /usr/local/bin 下邊創(chuàng)建一個(gè)軟鏈文件,文件名與我們希望使用的終端命令同名,命令如下:
$ sudo ln -s /home/user/bin/node-echo.js /usr/local/bin/node-echo
這樣處理后,我們就可以在任何目錄下使用 node-echo 命令了。
在 Windows 系統(tǒng)下的做法完全不同,我們得靠.cmd文件來(lái)解決問(wèn)題。假設(shè) node-echo.js 存放在 C:\Users\user\bin 目錄,并且該目錄已經(jīng)添加到 PATH 環(huán)境變量里了。接下來(lái)需要在該目錄下新建一個(gè)名為 node-echo.cmd 的文件,文件內(nèi)容如下:
@node "C:\User\user\bin\node-echo.js" %*
這樣處理后,我們就可以在任何目錄下使用 node-echo 命令了。