從命令列執行 Node.js 指令碼

執行 Node.js 程式的通常方法是執行全域性可用的 node 命令(安裝 Node.js 後),並傳遞要執行的檔名。

如果你的主 Node.js 應用程式檔案是 app.js,你可以透過輸入以下命令來呼叫它

node app.js

上面,你明確告訴 shell 用 node 執行你的指令碼。你也可以用 "shebang" 行將此資訊嵌入到你的 JavaScript 檔案中。“shebang”是檔案中的第一行,它告訴作業系統使用哪個直譯器來執行指令碼。下面是 JavaScript 的第一行

#!/usr/bin/node

上面,我們明確給出瞭解釋器的絕對路徑。並非所有作業系統都在 bin 資料夾中有 node,但都應該有 env。你可以告訴作業系統以 node 作為引數執行 env

#!/usr/bin/env node

// your javascript code

要使用 shebang,你的檔案需要有可執行許可權。你可以透過執行以下命令來給 app.js 可執行許可權

chmod u+x app.js

執行命令時,請確保你位於包含 app.js 檔案的同一目錄中。

將字串作為引數傳遞給 node 而不是檔案路徑

要將字串作為引數執行,你可以使用 -e, --eval "script"。它會將後面的引數作為 JavaScript 執行。在 REPL 中預定義的模組也可以在指令碼中使用。

在 Windows 上,使用 cmd.exe 時,單引號無法正常工作,因為它只識別雙引號 " 進行引用。在 Powershell 或 Git bash 中,'" 都可以使用。

node -e "console.log(123)"

自動重啟應用程式

從 Node.js V16 開始,有一個內建選項可以在檔案更改時自動重啟應用程式。這對於開發目的很有用。要使用此功能,你需要將 --watch 標誌傳遞給 Node.js。

node --watch app.js

這樣當你更改檔案時,應用程式將自動重啟。請閱讀 --watch 標誌文件

使用 Node.js 執行任務

Node.js 提供了一個內建的任務執行器,允許你執行 package.json 檔案中定義的特定命令。這對於自動化重複性任務特別有用,例如執行測試、構建專案或檢查程式碼。

使用 --run 標誌

--run 標誌允許你從 package.json 檔案的 scripts 部分執行指定的命令。例如,如果你有以下 package.json

{
  "type": "module",
  "scripts": {
    "start": "node app.js",
    "dev": "node --run start -- --watch",
    "test": "node --test"
  }
}

你可以使用 --run 標誌執行 test 指令碼

node --run test

向命令傳遞引數

讓我們來解釋一下 package.json 檔案 scripts 物件中的 dev 鍵。

語法 -- --another-argument 用於向命令傳遞引數。在這種情況下,--watch 引數被傳遞給 dev 指令碼。

node --run dev

環境變數

--run 標誌設定了特定的環境變數,這些變數對你的指令碼可能很有用

  • NODE_RUN_SCRIPT_NAME:正在執行的指令碼的名稱。
  • NODE_RUN_PACKAGE_JSON_PATH:正在處理的 package.json 檔案的路徑。

刻意設定的限制

與其他任務執行器(如 npm runyarn run)相比,Node.js 的任務執行器刻意地功能更有限。它專注於效能和簡潔性,省略了諸如執行 prepost 指令碼等功能。這使其適用於簡單的任務,但可能無法覆蓋所有用例。