從命令列執行 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 run 或 yarn run)相比,Node.js 的任務執行器刻意地功能更有限。它專注於效能和簡潔性,省略了諸如執行 pre 或 post 指令碼等功能。這使其適用於簡單的任務,但可能無法覆蓋所有用例。