使用NodeJS編寫的東西,要么是一個包,要么是一個命令行程序,而前者最終也會用于開發后者。因此我們在部署代碼時需要一些技巧,讓用戶覺得自己是在使用一個命令行程序。
例如我們用NodeJS寫了個程序,可以把命令行參數原樣打印出來。該程序很簡單,在主模塊內實現了所有功能。并且寫好后,我們把該程序部署在`/home/user/bin/node-echo.js`這個位置。為了在任何目錄下都能運行該程序,我們需要使用以下終端命令。
~~~
$ node /home/user/bin/node-echo.js Hello World
Hello World
~~~
這種使用方式看起來不怎么像是一個命令行程序,下邊的才是我們期望的方式。
~~~
$ node-echo Hello World
~~~
## Linux
在Linux系統下,我們可以把JS文件當作shell腳本來運行,從而達到上述目的,具體步驟如下:
1. 在shell腳本中,可以通過`#!`注釋來指定當前腳本使用的解析器。所以我們首先在`node-echo.js`文件頂部增加以下一行注釋,表明當前腳本使用NodeJS解析。
~~~
#! /usr/bin/env node
~~~
NodeJS會忽略掉位于JS模塊首行的`#!`注釋,不必擔心這行注釋是非法語句。
2. 然后,我們使用以下命令賦予`node-echo.js`文件執行權限。
~~~
$ chmod +x /home/user/bin/node-echo.js
~~~
3. 最后,我們在PATH環境變量中指定的某個目錄下,例如在`/usr/local/bin`下邊創建一個軟鏈文件,文件名與我們希望使用的終端命令同名,命令如下:
~~~
$ sudo ln -s /home/user/bin/node-echo.js /usr/local/bin/node-echo
~~~
這樣處理后,我們就可以在任何目錄下使用`node-echo`命令了。
## Windows
在Windows系統下的做法完全不同,我們得靠`.cmd`文件來解決問題。假設`node-echo.js`存放在`C:\Users\user\bin`目錄,并且該目錄已經添加到PATH環境變量里了。接下來需要在該目錄下新建一個名為`node-echo.cmd`的文件,文件內容如下:
~~~
@node "C:\User\user\bin\node-echo.js" %*
~~~
這樣處理后,我們就可以在任何目錄下使用`node-echo`命令了。