Я хотел бы, чтобы Heroku создавал мое приложение после того, как я его нажимаю, чтобы мне не приходилось подталкивать папку сборки каждый раз, когда я делаю изменения. Однако heroku устанавливает только зависимости от package.json и grunt (мой инструмент построения), а все его компоненты находятся в devDependencies. Я хотел бы держать их там, где они принадлежат. Какой обходной путь здесь?
Установите devDependencies на Heroku
Ответ 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
Чтобы удалить зависимости, вы должны сделать это
-
Обновление NPM_CONFIG_PRODUCTION
Конфигурация heroku: установить NPM_CONFIG_PRODUCTION = false
-
Добавьте геройку-сборку:
scripts ": {..." heroku-prebuild ":" npm install "}
Ответ 5
Вы можете использовать это в вашем скрипте сборки "build": "npm install --only=dev"
следует в случае, если вы все еще хотите выполнить больше операций, например, передавая код с помощью babel, вы можете сделать что-то вроде "build": "npm install --only=dev && babel src --out-dir dist --copy-files"