我有點羞愧,我自己找不到一個好的解決方案,但可惜。
使用 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.json
CLI 複製到(例如,不同的環境啟動不同的插件 - 這不是一般用例,因此即使程式設計師已經有了處理棄用的想法,也很容易被忽略)- 由於新增了內容,
.js
我們也不能複製整個腳本主體
- 由於新增了內容,
- 純粹的、純粹的懶惰
所以...
- 有沒有辦法啟動
--trace-deprecation
該scripts
部分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
,我所知道的最佳解決方案是跨環境。