Я только начал работать с 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-фактора предполагают, что это может быть неверный маршрут, я не обнаружил, что это будет иметь какие-либо затраты на практике, и предпочел это, а не вникать в сложности компаундирования пользовательского пакета сборки.