При разворачивании проекта с идеями из поста "NODE ЗАВИСИМОСТИ В PHP ПРОЕКТЕ" на heroku, наткнулся на невозможность собрать проект из-за некоторых особенностей этого хостинга.
Когда в админке heroku или из консоли создается приложение, то для него указывается так называемый buuldpack. По сути buuldpack это набор скриптов и файлов конфигурации, которые собирают приложение. В самом простом случае добавляется только php, например:
heroku buildpacks:set heroku/php
Если в таком виде попробовать задеплоить приложение, то произойдет следущее:
Соответственно нужно добавить ноду
heroku buildpacks:set heroku/nodejs
Но это не даст результатов и действия будут точно такимиже т.к. node не инициализирована.
На помощь приходит команда
heroku buildpacks:set heroku/php --index 2
Эта команда говорит heroku подвинуть порядок инициализации php окружения. Таким образом сначала появиться нода, потом php и деплой пройдет успешно.
Эту команду можно и не выполнять, а просто поменять порядок в вебинтерфейсе на вкладке settings.
Так как в корне проекта лежит файлик package.json, нода инициализирована, она пытается выполнить yarn или npm для установки зависимостей. А в качестве зависимостей указан файл, который должен сгенерировать пакет foxy, когда инициализируется php. Разорвать циклические зависимости можно удалив сгенерированную foxy зависимость из корневого package.json. Тперь порядок загрузки будет такой: