Использование NodeJS зависимостей разработки в шаге после развертывания приложения Heroku review-app - PullRequest
2 голосов
/ 03 апреля 2020

У меня есть (демо) приложение, размещенное на Heroku. Я включил в Heroku функцию «обзор приложения», чтобы ускорить создание новых экземпляров для проверок по запросу. Все эти обзорные экземпляры получают новую MongoDB (на mLab) для них через дополнительную систему Heroku. Это прекрасно работает.

В моем репозитории я определил несколько сценариев сеялки для быстрого запуска и запуска тестовой базы данных. Запуск yarn seed (или npm run seed) заполнит базу данных тестовыми данными. Это прекрасно работает во время разработки, и было бы идеально для просмотра приложений. Я хочу выполнить команду seeder в хуке postdeploy приложения обзора Heroku, что можно сделать, указав его в разделе environment.review файла app.json. Вот так:

{
  "name": "...",
  "addons": [
    "mongolab:sandbox"
  ],
  "environments": {
    "review": {
      "addons": [
        "mongolab"
      ],
      "scripts": {
        "postdeploy": "npm run seed"
      }
    }
  }
}

Проблема в том, что сценарий сеялки зависит от некоторых зависимостей только для разработки (faker, ts-node [это проект TypeScript] и mongo-seeding) для выполнения. И эти зависимости недоступны на этапе postdeploy приложения Heroku.

Я также не думаю, что «компиляция» машинописного текста на обычном этапе сборки - лучшая идея. Этот скрипт сеялки используется только в разработке (и обзорах приложений). Кроме того, я не уверен, что это решило бы проблему с отсутствующими зависимостями, такими как faker.

Как один go об этом? Какие уловки мне не хватает?

Можно ли пропустить шаг Heroku, где он активно удаляет зависимости разработки? Но только для просмотра приложений? Или, что еще лучше, могу ли я "исключить" только ту пару зависимостей, которая мне нужна, и только для приложений для проверки?

1 Ответ

0 голосов
/ 04 апреля 2020

Документы Heroku указывают, что когда переменная NODE_ENV содержит что-либо кроме "production", devDependencies не будет удалено после этапа сборки.

Чтобы убедиться, что это Это происходит только для приложений Heroku, вы можете установить переменную NODE_ENV в разделе environments.review приложения. json. Следующий конфиг должен сделать трюк:

{
  "name": "...",
  "addons": [
    "mongolab"
  ],
  "environments": {
    "review": {
      "addons": [
        "mongolab:sandbox"
      ],
      "env": {
        "NODE_ENV": "development"
      },
      "scripts": {
        "postdeploy": "npm run seed"
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...