Могу ли я использовать Bower и Rails на Heroku и по-прежнему держать каталог bower_components вне GIT?

Я только начал работать с Bower для управления зависимостями на стороне клиента. Я настроил Bower для установки всех файлов в /vendor/assets/components.

Затем я запускаю bower install для оценки файла bower.json и установки всех зависимостей.

#/bower.json

{
  "name": "My-App",
  "dependencies": {
    "angular": "1.0.8",
    "bootstrap": "3.0.0"
  }
}

Наконец, в соответствии с инструкциями, которые я прочитал, я удалил каталог компонентов из GIT.

#.gitignore

#...
# Ignore all stuff manged by bower
/vendor/assets/components

Поэтому проект не включает какие-либо из этих активов в слаг и требует запуска bower install для их установки.

Это кажется мне разумным так же, как разумно отделить реальные драгоценные камни от проекта. Оно также соответствует принципам 12-факторного приложения и явно объявляет и изолирует зависимости. .

Однако исключение зависимостей приводит к захлебыванию компиляции ассетов...

Однако, когда я нажимаю на Heroku, предварительная компиляция ресурсов завершается сбоем, потому что ресурсы еще не добавлены, и поэтому, когда звездочки пытаются оценить:

#application.css.scss
/* ...
*= require bootstrap/dist/css/bootstrap
*= require_self
*= require_tree .
*/

он обнаруживает, что в bootstrap/dist/css/bootstrap ничего не найдено, потому что Bower еще ничего не установил.

Возможное решение — используйте package.json для запуска скрипта после установки.

Я следил за этим руководством, в котором предлагается добавить файл package.json со следующим содержимым:

"dependencies": {
    "bower": "0.6.x"
},
"scripts": {
    "postinstall": "./node_modules/bower/bin/bower install"
}

Однако bower install необходимо запускать не как сценарий после установки, а как сценарий после отправки и до компиляции ресурсов. Мне также не ясно, будет ли Heroku запускать препроцессор npm для приложения Rails.

Лучше выяснить, как запустить установку Bower или просто включить файлы в GIT?

Есть два решения. Первый и самый простой — просто запустить bower install локально и включить файлы в GIT. Это неважно, но я хотел бы придерживаться принципов приложения 12 Factor.

Второе решение состоит в том, чтобы выяснить, как запустить npm и запустить bower install на Heroku до того, как произойдет предварительная компиляция ресурсов.

Является ли это жизнеспособным каким-либо простым способом или лучше просто скомпилировать активы Bower локально?

Постскриптум

В конце концов я пришел к выводу, что нужно просто запустить bower install локально и включить файлы в GIT. Хотя принципы 12-фактора предполагают, что это может быть неверный маршрут, я не обнаружил, что это будет иметь какие-либо затраты на практике, и предпочел это, а не вникать в сложности компаундирования пользовательского пакета сборки.


person Peter Nixey    schedule 23.10.2013    source источник
comment
отличный вопрос, очень подробный. У меня вопрос: в чем преимущество/необходимость исключения их из git?   -  person ahnbizcad    schedule 15.09.2014
comment
@gwho Я думал, что это лучшая практика согласно 12factor.net. Однако я обновил вопрос, указав, что в конце концов я не пошел по этому пути. Я все еще думаю, что это, вероятно, было бы разумно, однако на сегодняшний день это не стоило никаких затрат.   -  person Peter Nixey    schedule 15.09.2014


Ответы (1)


Попробуйте использовать мультибилдпак ddollar. При установке двух пакетов сборки вы получаете дополнительное преимущество, заключающееся в возможности запуска сценария после установки после установки nodejs, но до установки пакета сборки ruby. Это позволит вам получить ваши активы с помощью bower install до того, как они будут предварительно скомпилированы.

Я составил подсказку о том, как работать со сценарием Heroku + Rails + Bower.

https://coderwall.com/p/6bmygq

person anthonator    schedule 08.11.2013
comment
Большое спасибо за совет. Не знал о postinstall трюке! - person Felipe Lima; 02.04.2014