Назад | Перейти на главную страницу

Запуск `npm install` в подмодуле git до завершения развертывания в Elastic Beanstalk

В моем проекте Node.js есть несколько подмодулей git (это то, что сейчас нелегко изменить, поэтому я не могу использовать реестр пакетов, например npm)

Хотя EB автоматически инициализирует и обновит подмодули, мне нужно запустить npm install в каждом из них, чтобы они работали должным образом.

Как это рекомендуется делать?

Я читал что-то о том, чтобы просто добавить prestart сценарий в моем package.json, лайк:

"prestart" : "git submodule foreach npm install"

Но это неправильно.

У меня уже есть скрипты в .ebextensions, но я не уверен, в каком месте мне следует поместить такой скрипт.

Я нашел ответ с помощью сотрудников службы поддержки 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

Мне нужно сделать это вручную для каждого из модулей. В моем случае, поскольку он всего один, это просто.