簡體   English   中英

Google App Engine Standard Node JS 如何運行構建腳本?

[英]Google App Engine Standard Node JS how to run build script?

Node 的 GAE 標准是否支持構建腳本的方法? 我嘗試在 package.json 中使用 postinstall ,但沒有用。

我的代碼庫在子目錄中有包含package.json的子目錄。 在我的根package.json

scripts: { 
    postinstall: cd vendor && npm install 
    ....
}

但是我沒有看到安裝任何供應商軟件包,所以我傾向於相信 postinstall 不會在 GAE Node 標准上觸發。

有什么方法可以讓我安裝子目錄依賴項而不必將我所有的vendor/package.json依賴項復制並粘貼到根目錄?

注意:我也試過在 package.json 腳本中放置一個“安裝”,但這似乎也沒有被觸發。

在 GAE 標准中,依賴項的安裝是自動管理的。 您應該將它們添加到您的package.json

正如谷歌文檔所提到的:

部署應用程序時,Node.js 運行時會使用 npm install 命令自動安裝 package.json 文件中聲明的所有依賴項。

{
  "dependencies": {
    "lodash": "^4.0.1"
  }
}

安裝將在應用程序部署期間通過:

gcloud app deploy

要添加構建步驟,請運行以下命令:

gcloud beta app gen-config --custom

這將生成運行的默認 dockerfile 和配置。 在您的 .dockerfile 中,添加您的構建步驟:

RUN npm run build --unsafe-perm || \
  ((if [ -f npm-debug.log ]; then \
      cat npm-debug.log; \
    fi) && false)

"prestart": "if [ ! -d build ]; then npm run build; fi",

“-d build”這里是構建過程生成的文件夾,將其替換為您實際使用的任何內容。

不確定這是否適用於您的情況,但似乎 GAE 標准增加了運行自定義構建步驟的能力。

但是它確實指出:

執行您的自定義構建步驟后,App Engine 通過僅安裝在您的package.json文件的依賴項字段中聲明的生產dependencies移除並重新生成node_modules文件夾。

也許因為node_modules在您的vendor/目錄中,GAE 可能無法檢測並刪除它們,從而實現您的目標。 這是一個預安裝步驟,與腳本中指定的postinstall不同。 不確定是否重要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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