@mikediam
Web development

Хранить ли в Git файлы после минификации, конкатенации и прочей обфускации через Grunt?

Пример. Есть проект, с репозиториями: локально и на сервере.
При разработке используется grunt который при изменении файлов запускает concat, uglify, cssmin и htmlmin. Измененные файлы попадают в папку dest, чтобы не заменить оригинальные файлы, над которыми ведется работа.

Поскольку на боевом сервере тоже используется гит, который будет вытаскивать изменения, но из-за того что сжатые файлы лежат в папке dest (а должны заменять оригинальные), изменения на сайт не попадут.

Вопрос - как настроить git и grunt так чтобы минифицированные файлы сразу попадали на сервер без дополнительных танцев с бубном?
  • Вопрос задан
  • 300 просмотров
Решения вопроса 1
isqua
@isqua
Научу HTML, CSS, JS, BEM и Git
Нет, результаты сборки хранить в репозитории не нужно. Потом будет болеть голова от вопросов «а сейчас собранные файлы синхронизированны с исходниками или нет?».

Есть несколько вариантов. Один из них — запускать сборку на сервере. Т.е. сервер делает `git pull && grunt build` и появляются новые файлы. Ещё лучше — делать не git pull, а git clone в новую папку. Тогда можно будет быстро откатиться на предыдущую версию, если что-то пошло не так. Папки называть по текущему времени. И хранить последние N (ну, например, пять).

project
    2016-02-29-12-15-36
    2016-03-15-17-00-11
    2016-03-21-11-57-59
    current -> 2016-03-21-11-57-59 // current — ссылка на папку с последней версией


Т.е. при деплое происходит вот что:

git clone <%projecturl%> <%currenttime%>
cd <%currenttime%>
grunt build
cd ..
rm <%current%>
ln -s <%currenttime%> current


Есть много утилит, автоматизирующих это. Например, Capistrano (в руби). Какой у вас в проекте основной язык? Для него наверное есть аналоги.

Можно просто заливать готовые файлы rsync’ом. А можно написать bash-скрипт, типа shipit.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
VladimirAndreev
@VladimirAndreev
php web dev
а почему не грузить скрипты и стили из папки dest?
ну, или уже phing или конкурентов настраивать.
ну, или AssetBundle от symfony пользовать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы