[英]How to ignore npm scripts when deploying to PAAS/Modulus
部署到Modulus.io時 (這可能也適用於其他PAAS),他們將從packages.json文件安裝所需的包。 作為安裝過程的一部分,也可能會調用一些npm腳本。 例如postinstall
。 但是,這些腳本可能無法在生產中運行(或不應該運行)。 是因為腳本僅在本地可用或對生產沒有任何意義。
如何檢測環境並執行或不執行某些npm腳本? 我可以訪問process.env
對象並適當地處理腳本還是有更好的方法?
不幸的是,你不能在你的package.json
為特定環境定義腳本。
假設你在package.json
有一個像這樣聲明的postinstall
腳本:
{
"scripts": {
"postinstall": "node postInstall.js"
},
}
“簡單”的方法是在postInstall.js
腳本中添加有關環境的邏輯:
if (process.env.NODE_ENV === 'production') {
// Do not run in production
process.exit(1);
}
如果您在production
環境中運行,則只需指示Node.js使用指定的退出代碼盡快終止進程。
您也可以在postinstall
掛鈎中運行多個腳本,將所有腳本執行移動到具有相同機制的包裝器中以退出某些環境,否則,執行所有其他腳本。
如果你總是在Unix系統上運行,另一種方法是使用Bash條件直接檢查Node.js環境:
{
"scripts": {
"postinstall": "[ \"$NODE_ENV\" != production ] && node postInstall.js"
},
}
在這種情況下,如果節點環境不是production
環境,那么您正在運行postInstall.js
腳本。 您可以將其調整為僅在development
等方面的其他條件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.