簡體   English   中英

如何在部署到PAAS / Modulus時忽略npm腳本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM