Подтвердить что ты не робот

Установите devDependencies на Heroku

Я хотел бы, чтобы Heroku создавал мое приложение после того, как я его нажимаю, чтобы мне не приходилось подталкивать папку сборки каждый раз, когда я делаю изменения. Однако heroku устанавливает только зависимости от package.json и grunt (мой инструмент построения), а все его компоненты находятся в devDependencies. Я хотел бы держать их там, где они принадлежат. Какой обходной путь здесь?

4b9b3361

Ответ 1

Heroku по умолчанию устанавливает только производственные зависимости, игнорируя зависимости разработки в devDependencies.

Настройка производственной переменной npm на false делает трюк:

heroku config:set NPM_CONFIG_PRODUCTION=false

Более подробная информация доступна на странице Heroku Node.js Support.

Ответ 2

Сохраняя NPM_CONFIG_PRODUCTION true, я использовал хуки скриптов Heroku:

"scripts": {
  ...
  "heroku-prebuild": "export NPM_CONFIG_PRODUCTION=false; export NODE_ENV=; NPM_CONFIG_PRODUCTION=false NODE_ENV=development npm install --only=dev --dev",
  "heroku-postbuild": "export NPM_CONFIG_PRODUCTION=true; export NODE_ENV=production;",
   ...
},

(Наконец) работал на меня.

Ответ 3

scripts": {
  ...
  "heroku-prebuild": "npm install --only=dev"
}

Этого было достаточно для меня. Благодаря PixnBits за подсказку о создании герою-prebuild. Кроме того - моя проблема была с babel. Я закончил перемещать babel-preset-es2015 и другие пресеты в зависимости, иначе babel жаловался на пресеты.

Обновление: 8/11/2017 У меня возникли проблемы с этим. Кажется, что все изменилось (и npm теперь на 5.3). Но то, что я вижу, это то, что запускается heroku-prebuild script, а затем запускается post-install script (но я только пытался установить -dev).

Итак, что я делал, это просто запустить:

heroku config:set NPM_CONFIG_PRODUCTION=false

И просто оставьте это так. Мне бы хотелось получить лучшее решение.

Ответ 4

Чтобы удалить зависимости, вы должны сделать это

  1. Обновление NPM_CONFIG_PRODUCTION

    Конфигурация heroku: установить NPM_CONFIG_PRODUCTION = false

  2. Добавьте геройку-сборку:

    scripts ": {..." heroku-prebuild ":" npm install "}

Ответ 5

Вы можете использовать это в вашем скрипте сборки "build": "npm install --only=dev" следует в случае, если вы все еще хотите выполнить больше операций, например, передавая код с помощью babel, вы можете сделать что-то вроде "build": "npm install --only=dev && babel src --out-dir dist --copy-files"