Google App Engine标准节点JS如何运行构建脚本?

时间:2018-07-02 12:54:00

标签: node.js google-app-engine

针对节点的GAE标准是否支持构建脚本的方法?我尝试在package.json中使用postinstall,但这没有用。

我的代码库中的子目录中有package.json子目录。在我的根package.json中有

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

但是我没有看到安装任何供应商软件包,因此我倾向于认为GAE Node标准不会触发后安装。

有什么方法可以安装子目录依赖项,而不必将我所有的vendor/package.json依赖项复制并粘贴到根目录?

注意:我也尝试过在package.json脚本中放置一个“安装”,但是似乎也没有被触发。

4 个答案:

答案 0 :(得分:0)

在GAE标准中,将自动管理依赖项的安装。您应该将它们添加到package.json中。

Google documentation所述:

  

部署应用程序时,Node.js运行时会使用npm install命令自动安装package.json文件中声明的所有依赖项。

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

将在应用部署期间通过以下方式完成安装:

gcloud app deploy

答案 1 :(得分:0)

要添加构建步骤,请运行以下命令:

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)

答案 2 :(得分:0)

“ prestart”:“如果[!-d build];然后npm run build; fi”,

“ -d build”是构建过程生成的文件夹,将其替换为您实际使用的任何文件夹。

答案 3 :(得分:0)

不确定这是否适合您的情况,但似乎GAE标准已为run a custom build step添加了此功能。

但是它确实说明:

执行自定义构建步骤后,App Engine仅通过安装node_modules文件的依赖项字段中声明的生产版本dependencies来删除并重新生成package.json文件夹。

也许因为node_modules在您的vendor/目录中,所以GAE可能不会检测并删除它们,从而实现了您的目标。这是预安装步骤,与脚本中指定的postinstall不同。不确定是否重要。