У меня есть 2 версии (ветви) моего приложения: master и dev.Они размещены в разных доменах в Heroku.
Я храню источники в Bitbucket, а затем использую конвейер для развертывания в Heroku.Это очень удобно, но у меня проблема в том, что я не могу сказать BB, чтобы он строил по-другому.В package.json есть строка, которая должна отличаться:
для производства (мастер):
"scripts": {
"heroku-postbuild": "webpack --config webpack.prod.js"
},
для dev:
"scripts": {
"heroku-postbuild": "webpack --config webpack.dev.js"
},
В результате я хочу получить скомпилированный, сжатый код JavaScript на производстве и отладочный, несжатый - на устройстве.
Я не могу понять, как решить эту проблему.
Я пытался использовать 2 разные версии package.json, используя git .gitattributes и merge = our .Но у него есть 2 ловушки:
- У меня все еще есть конфликт при слиянии, и мне приходится все время редактировать этот файл.
- Если я устанавливаю какой-то новый пакет в dev, package.json будет обновляться автоматически, но у prod будет своя собственная версия, и сборка завершится сбоем, поскольку у него нет обновленного списка пакетов.
Какое решение этой проблемы правильно?
Решение найдено!
Спасибо @ piotr.wittchen, хотя я использую другое решение, он подтолкнул меня, чтобы найти его.Оказалось, что я могу использовать переменные окружения в package.json https://devcenter.heroku.com/articles/node-best-practices#hook-things-up
Итак, я просто изменил строку в package.json:
"scripts": {
"heroku-postbuild": "webpack --config webpack.$env.js"
},
Переменная env равна "dev"в приложении для разработки Heroku и" prod "в prod, и он работает как шарм, нет необходимости иметь разные версии одного и того же файла.