针对节点的GAE标准是否支持构建脚本的方法?我尝试在package.json中使用postinstall,但这没有用。
我的代码库中的子目录中有package.json
子目录。在我的根package.json
中有
scripts: {
postinstall: cd vendor && npm install
....
}
但是我没有看到安装任何供应商软件包,因此我倾向于认为GAE Node标准不会触发后安装。
有什么方法可以安装子目录依赖项,而不必将我所有的vendor/package.json
依赖项复制并粘贴到根目录?
注意:我也尝试过在package.json脚本中放置一个“安装”,但是似乎也没有被触发。
答案 0 :(得分:0)
在GAE标准中,将自动管理依赖项的安装。您应该将它们添加到package.json
中。
部署应用程序时,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
不同。不确定是否重要。