@mikediam
Web development

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

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

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

Вопрос - как настроить git и grunt так чтобы минифицированные файлы сразу попадали на сервер без дополнительных танцев с бубном?
  • Вопрос задан
  • 298 просмотров
Решения вопроса 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 пользовать.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы