我的 Node.js 项目有一些 git 子模块(这是目前无法轻易更改的,所以我不能使用像 npm 这样的包注册表)
虽然 EB 会自动初始化并更新子模块,但我需要npm install
在每个子模块中运行它们才能使它们正常工作。
推荐的做法是什么?
我读过一些关于prestart
在我的中添加脚本的内容package.json
,例如:
"prestart" : "git submodule foreach npm install"
但这感觉不对。
我已经有一些脚本.ebextensions
,但我不确定应该把这些脚本放在哪个位置。
答案1
在 AWS 支持人员的帮助下,我找到了答案。
我00custom_npm.config
在我的文件中添加了一个名为.ebextensions
以下内容:
files:
"/opt/elasticbeanstalk/hooks/appdeploy/pre/51_submodules_install_dependencies.sh":
mode: "000755"
owner: root
group: root
content: |
#! /bin/bash
EB_APP_STAGING_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k app_staging_dir)
cd $EB_APP_STAGING_DIR/<submodule-name> && /opt/elasticbeanstalk/node-install/node-v4.3.0-linux-x64/bin/npm install
我需要为每个模块手动执行此操作。就我而言,因为只有一个模块,所以很容易。