您在啟動 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 |
在進程內的所有 |