您在啟動 Node.js 程式時可以使用的所有選項

Node.js 可以以各種方式啟動,您可以使用許多選項來配置 Node.js 的行為。

這些選項中的大部分都用於配置 v8 引擎的行為。

這裡列出的某些選項默認情況下是禁用的,就像您在 Default 列中看到的那樣。您可以通過運行 node 並傳遞標誌來啟用它們,例如 node --experimental-extras

如果一個選項默認是啟用的,您可以通過在標誌名稱前加上 --no- 來禁用它,例如 node --no-harmony-shipping

一些選項可用於優化性能,例如 --optimize-for-size--max_old_space_size--gc_interval,就像 Heroku 建議的那樣

其他一些選項用於啟用或禁用特定功能。我經常使用它們來嘗試在 beta 中實現的新提議的 JavaScript 功能,比如 --harmony-public-fields

註: 選項名稱允許使用連字符(-)或下劃線(_)分隔單詞,或者兩者混合使用。在教程中您會發現兩者混合使用,可能會有點混淆。它們沒有區別。

我通過運行命令 node --v8-options 得到了以下列表,它是相對於 Node.js 11.9.0 進行的,這是我撰寫本文時的最新 Node.js 版本。

選項 描述 類型 默認值
--experimental-extras 启用通过 v8_experimental_extra_library_files 編譯的代碼 bool false
--use-strict 強制使用嚴格模式 bool false
--es-staging 启用值得測試的和內部使用的 Harmony 功能 bool -
--harmony 啟用所有已完成的 Harmony 功能 bool false
--harmony-shipping 啟用所有已發佈的 Harmony 功能 bool true
--harmony-do-expressions 啟用“harmony do-expressions” 進展中 bool
--harmony-class-fields 啟用“類文字中的 harmony fields” 進展中 bool
--harmony-static-fields 啟用“類字面中的 harmony 靜態字段” 進展中 bool
--harmony-await-optimization 啟用“harmony await 佔用 1 個 tick” 進展中 bool
--harmony-locale 啟用“Intl.Locale” 進展中 bool
--harmony-intl-list-format 啟用“Intl.ListFormat” 進展中 bool
--harmony-intl-relative-time-format 啟用“Intl.RelativeTimeFormat” 進展中 bool
--harmony-public-fields 啟用“類文字中的 harmony 公共字段” bool false
--harmony-private-fields 啟用“類文字中的 harmony 私有字段” bool false
--harmony-numeric-separator 啟用“數字間的 harmony 數字分隔符” bool false
--harmony-string-matchall 啟用“harmony String.prototype.matchAll” bool false
--harmony-global 啟用“harmony global” bool false
--harmony-string-trimming 啟用“harmony String.prototype.trim{Start,End}” bool true
--harmony-sharedarraybuffer 啟用“harmony sharedarraybuffer” bool true
--harmony-function-tostring 啟用“harmony Function.prototype.toString” bool true
--harmony-import-meta 啟用“harmony import.meta 屬性” bool true
--harmony-bigint 啟用“harmony 任意精度整數” bool true
--harmony-dynamic-import 啟用“harmony 動態 import” bool true
--harmony-array-prototype-values 啟用“harmony Array.prototype.values” bool true
--harmony-array-flat 啟用“harmony Array.prototype.{flat,flatMap}” bool true
--harmony-symbol-description 啟用“harmony Symbol.prototype.description” bool true
--icu-timezone-data 使用 ICU 獲取有關時區的信息 bool true
--future 暗示我們希望在不遠的將來發佈的所有階段功能 bool false
--allocation-site-pretenuring 在分配位置上預分配 bool true
--page-promotion 基於利用率提升頁面 bool true
--page-promotion-threshold 启用快速清理的页面上存活字節的最小百分比 int 70
--trace-pretenuring 跟蹤 HAllocate 指令的预分配决策 bool false
--trace-pretenuring-statistics 跟蹤预分配位置的統計信息 bool false
--track-fields 跟蹤只包含 smi 值的字段 bool true
--track-double-fields 跟蹤包含 double 值的字段 bool true
--track-heap-object-fields 跟蹤包含堆值的字段 bool true
--track-computed-fields 跟蹤計算 boilerplate 字段 bool true
--track-field-types 跟蹤字段類型 bool true
--trace-block-coverage 跟蹤收集的塊覆蓋信息 bool false
--feedback-normalization 將規格化反饋提供給構造函數 bool false
--optimize-for-size 启用更偏向內存大小而不是執行速度的優化 bool false
--enable-one-shot-optimization 为只執行一次的代碼啟用尺寸優化 bool true
--unbox-double-arrays 自動拆箱雙精度數組 bool true
--interrupt-budget 應該用於剖析器計數器的中斷預算 int 147456
--ignition-elide-noneffectful-bytecodes 忽略沒有外部效果的 bytecodes bool true
--ignition-reo 使用 ignition register equivalence optimizer bool true
--ignition-filter-expression-positions 在 bytecode pipeline 之前過濾表達式位置 bool true
--ignition-share-named-property-feedback 從同一對象中加載相同命名屬性時共享反饋槽 bool true
--print-bytecode 打印 ignition 解释器生成的 bytecode bool false
--print-bytecode-filter 過濾選擇要打印的函数 string *
--trace-ignition-codegen 跟蹤 ignition 解释器 bytecode 處理程序的 codegen bool false
--trace-ignition-dispatches 跟蹤 ignition 解释器分派到 bytecode 處理程序的過程 bool false
--trace-ignition-dispatches-output-file 写入 bytecode 處理程序分派表的文件名 默認情况下,不會將表寫入文件 string
--fast-math 更快 但可能不準確的數學函數 bool
--trace-track-allocation-sites 跟踪分配位置的跟踪 bool false
--trace-migration 跟踪對象遷移 bool false
--trace-generalization 跟踪映射泛化 bool false
--concurrent-recompilation 在單獨的線程上將熱門函數異步優化 bool true
--trace-concurrent-recompilation 跟踪並發重新編譯 bool false
--concurrent-recompilation-queue-length 并發編譯隊列的長度 int 8
--concurrent-recompilation-delay 模擬編譯延遲,以毫秒為單位 int 0
--block-concurrent-recompilation 阻止排隊的任務,直到被釋放 bool false
--concurrent-compiler-frontend 在單獨的線程上運行優化編譯器的前端階段 bool false
--strict-heap-broker 在序列化不完整時失敗 bool false
--trace-heap-broker 跟踪堆經紀 bool false
--stress-runs 壓力運行次數 int 0
--deopt-every-n-times 從 deoptimization 點經過 N 次後進行 deoptimization int 0
--print-deopt-stress 打印可能的 deoptimization 點的數量 bool false
--turbo-sp-frame-access 在可能的情況下使用相對於框架的堆疊指針訪問 bool false
--turbo-preprocess-ranges 在註冊分配後在運行執行階段運行預註冊分配 bool true
--turbo-filter TurboFan 處理程序的優化過濾器 string *
--trace-turbo 跟踪生成的 TurboFan IR bool false
--trace-turbo-path 目錄,將生成的 TurboFan IR 寫入其中 string nullptr
--trace-turbo-filter 用於跟踪 turbofan 編譯的過濾器 string *
--trace-turbo-graph 跟踪生成的 TurboFan 圖形 bool false
--trace-turbo-scheduled 跟踪帶有時間表的 TurboFan IR bool false
--trace-turbo-cfg-file trace turbo cfg graph for C1 visualizer to a given file name string
--trace-turbo-types 跟踪 TurboFan 的類型 bool true
--trace-turbo-scheduler 跟踪 TurboFan 的調度器 bool false
--trace-turbo-reduction 跟踪 TurboFan 的各種減少器 bool false
--trace-turbo-trimming 跟踪 TurboFan 的圖修剪 bool false
--trace-turbo-jt 跟踪 TurboFan 的跳線 bool false
--trace-turbo-ceq 跟踪 TurboFan 的控制等效性 bool false
--trace-turbo-loop 跟踪 TurboFan 的循環優化 bool false
--trace-alloc 跟踪寄存器分配器 bool false
--trace-all-uses 跟踪所有使用位置 bool false
--trace-representation 跟踪表示類型 bool false
--turbo-verify 在每個階段驗證 TurboFan 圖形 bool false
--turbo-verify-machine-graph 在指令選擇之前驗證 TurboFan 機器圖形 string nullptr
--trace-verify-csa 跟踪代碼存根驗證 bool false
--csa-trap-on-node 創建與給定存根中的給定節點 ID 相關的 node 時觸發斷點。格式為: StubName,NodeId string nullptr
--turbo-stats 打印 TurboFan 統計信息 bool false
--turbo-stats-nvp 將 TurboFan 統計信息以機器可讀的格式打印 bool false
--turbo-stats-wasm 打印 WebAssembly 編譯的 TurboFan 統計信息 bool false
--turbo-splitting 在 TurboFan 中計劃時拆分節點 bool true
--function-context-specialization 在 TurboFan 中啟用函數上下文專用性 bool false
--turbo-inlining 在 TurboFan 中啟用內聯 bool true
--max-inlined-bytecode-size 單個內聯中的 bytecode 的最大大小 int 500
--max-inlined-bytecode-size-cumulative 考慮用於內聯的累積 bytecode 的最大大小 int 1000
--max-inlined-bytecode-size-absolute 考慮用於內聯的累積 bytecode 的最大大小 int 5000
--reserve-inline-budget-scale-factor 考慮用於內聯的累積 bytecode 的最大大小 float 1.2
--max-inlined-bytecode-size-small 考慮用於小型函數內聯的 bytecode 的最大大小 int 30
--min-inlining-frequency 內聯所需的最小頻率 float 0.15
--polymorphic-inlining 多態內聯 bool true
--stress-inline 將內聯的閾值設定為非常高,以盡可能多地進行內聯 bool false
--trace-turbo-inlining 跟踪 TurboFan 的內聯 bool false
--inline-accessors 內聯 JavaScript 訪問器 bool true
--inline-into-try 內聯嵌入到 try 塊中 bool true
--turbo-inline-array-builtins 在 TurboFan 代碼中內聯數組內建函數 bool true
--use-osr 使用在堆上替換 bool true
--trace-osr 跟踪堆上替換 bool false
--analyze-environment-liveness 分析環境槽的活性並擦除死值 bool true
--trace-environment-liveness 跟踪本地變量槽的活性 bool false
--turbo-load-elimination 在 TurboFan 中啟用負載消除 bool true
--trace-turbo-load-elimination 跟踪 TurboFan 中的負載消除 bool false
--turbo-profiling 在 TurboFan 中啟用分析 bool false
--turbo-verify-allocation 驗證 TurboFan 中的寄存器分配 bool false
--turbo-move-optimization 優化 TurboFan 中的間隙移動 bool true
--turbo-jt 在 TurboFan 中啟用跳線線程 bool true
--turbo-loop-peeling Turbofan 循環剝離 bool true
--turbo-loop-variable TurboFan 循環變量優化 bool true
--turbo-cf-optimization 在 TurboFan 中優化控制流 bool true
--turbo-escape 啟用逃逸分析 bool true
--turbo-allocation-folding TurboFan 分配摺疊 bool true
--turbo-instruction-scheduling 在 TurboFan 中启用指令调度 bool false
--turbo-stress-instruction-scheduling 隨機調度指令以強調依賴性跟蹤 bool false
--turbo-store-elimination 在 TurboFan 中启用存儲消除 bool true
--trace-store-elimination 跟踪儲存消除 bool false
--turbo-rewrite-far-jumps 重寫遠跳躍到近跳躍 ia32、x64 bool
--experimental-inline-promise-constructor 使用 TurboFan 內聯 Promise 構造函數 bool true
--untrusted-code-mitigations 启用為運行受信任的代碼而採取的緩解措施 bool false
--branch-load-poisoning 使用分支條件掩码加載 bool false
--minimal 简化執行模型以便更容易移植 使用 Ignition,但不優化 bool
--expose-wasm 向 JavaScript 公開 wasm 接口 bool true
--assume-asmjs-origin 強制 wasm 解碼器假設輸入是內部 asm-wasm 格式 bool false
--wasm-disable-structured-cloning 禁用 wasm 結構化克隆 bool false
--wasm-num-compilation-tasks wasm 平行編譯任務數量 int 10
--wasm-write-protect-code-memory 在 wasm 原生堆上寫入保護代碼記憶 bool false
--wasm-trace-serialization 跟踪序列化/反序列化 bool false
--wasm-async-compilation 啟用實際的異步編譯 WebAssembly.compile bool
--wasm-test-streaming 對測試使用流式編譯而不是異步編譯 bool false
--wasm-max-mem-pages wasm 實例的最大 64KiB 內存頁數 uint 32767
--wasm-max-table-size wasm 實例的最大表大小 uint 10000000
--wasm-tier-up 启用 wasm 基線編譯器並逐步轉向優化編譯器 bool true
--trace-wasm-ast-start 跟踪 wasm AST 的開始函數 包含 int
--trace-wasm-ast-end 跟踪 wasm AST 的結束函數 排除 int
--liftoff 启用 Liftoff,WebAssembly 的基線編譯器 bool true
--wasm-trace-memory 打印 wasm 代碼中執行的所有內存更新 bool false
--wasm-tier-mask-for-testing 用 TurboFan 編譯而不是 Liftoff 編譯編譯的函數二進制掩碼 int 0
--validate-asm 在編譯之前驗證 asm.js 模塊 bool true
--suppress-asm-messages 不發出 asm.js 相關消息 用於黃金文件測試 bool
--trace-asm-time 將 asm.js 時間信息日誌輸出到控制台 bool false
--trace-asm-scanner 日誌 asm.js 掃描器遇到的標記 bool false
--trace-asm-parser 詳細記錄 asm.js 解析失敗 bool false
--stress-validate-asm 嘗試對所有內容進行驗證為 asm.js bool false
--dump-wasm-module-path 將 wasm 模塊轉存到指定的目錄 string nullptr
--experimental-wasm-mv 启用用於 wasm 的原型多值支持 bool false
--experimental-wasm-eh 启用用於 wasm 的原型異常處理操作碼 bool false
--experimental-wasm-se 启用用於 wasm 的原型符號擴展操作碼 bool true
--experimental-wasm-sat-f2i-conversions 启用用於 wasm 的原型飽和化浮點轉換操作碼 bool false
--experimental-wasm-threads 启用用於 wasm 的原型線程操作碼 bool false
--experimental-wasm-simd 启用用於 wasm 的原型 SIMD 操作碼 bool false
--experimental-wasm-anyref 启用用於 wasm 的原型任意引用操作碼 bool false
--experimental-wasm-mut-global 启用用於 wasm 的原型導入/導出可變全局變量支持 bool true
--wasm-opt 启用 wasm 優化 bool false
--wasm-no-bounds-checks 禁用邊界檢查 只能用於性能測試 bool
--wasm-no-stack-checks 禁用堆棧檢查 只能用於性能測試 bool
--wasm-shared-engine 在進程內的所有