如何在 npm 腳本中傳遞節點參數,例如“--trace-deprecation”

如何在 npm 腳本中傳遞節點參數,例如“--trace-deprecation”

我有點羞愧,我自己找不到一個好的解決方案,但可惜。

使用 npm,我們通常有一個帶有段package.json的文件,scripts用於儲存我們希望工具鏈定期執行的任務,例如:

"scripts": {
    "build": "webpack --env production",
    "start": "webpack-dev-server"
}

現在我們可能已經更新了工具鏈的一部分 - 在這個範例中是 webpack - 突然我們收到一個如下訊息:

(node:10868) [DEP_WEBPACK_DEPRECATION_ARRAY_TO_SET] DeprecationWarning: Compilation.modules was changed from Array to Set (using Array method 'reduce' is deprecated)
(Use `node --trace-deprecation ...` to show where the warning was created)

按原樣,它對於診斷和解決問題完全沒有用。某些建置腳本中的某些地方是錯誤的。 .... 耶!

至少在 webpack 及其外掛程式的情況下,我們可以獲得在 CLI 上呼叫的非常有用的追蹤輸出:

node --trace-deprecation node_modules/webpack/bin/webpack.js --env production

相當麻煩的一行,不是嗎?我們確實想避免這種情況的原因有很多。排名不分先後:

  • 特別是棄用是彩色編碼訊息海洋中的一條無色線 - 很容易被錯過
  • 我們必須建構該項目再次注意到棄用後
  • 在腳本中,我們只需使用所需建置工具的名稱,這裡我們必須提供完整的相對路徑
  • 我們必須將所需的參數從package.jsonCLI 複製到(例如,不同的環境啟動不同的插件 - 這不是一般用例,因此即使程式設計師已經有了處理棄用的想法,也很容易被忽略)
    • 由於新增了內容,.js我們也不能複製整個腳本主體
  • 純粹的、純粹的懶惰

所以...

  • 有沒有辦法啟動--trace-deprecationscripts部分package.json
  • 如果沒有,有沒有辦法使用替代建置腳本來源,例如透過NPS

....我想,我總是可以將節點呼叫放入單獨的批次檔中,但我寧願使用一個位置來管理所有建置腳本。

預期用例:

我希望在本地建置時以及可能在選定的 CI 分支上始終啟用此選項,以便我可以將完整追蹤直接輸出到日誌中並將該步驟標記為不穩定。擁有專用的 npm 腳本“build:trace”或類似的腳本似乎是簡單的解決方案 -如果可以辦到。

答案1

確實是的,您可以將許多節點 CLI 標誌作為環境變數傳遞,這些變數可以內聯在scripts命令中。例如:

"build": "NODE_OPTIONS='--trace-deprecation' webpack",

有關支援標誌的文檔,請參閱:https://nodejs.org/api/cli.html#node_optionsoptions

另外,僅僅在 Windows 上加入環境變數是行不通的。如果您想在自己的領域使用跨平台環境變量scripts,我所知道的最佳解決方案是跨環境

相關內容