Проблемы с проектированием рабочего процесса grunt с rev и usemin для веб-разработчика

Я собираюсь начать использовать grunt-rev и grunt-usemin с grunt-watch для своих нужд веб-разработки (в частности, RESTful Web App).

У меня есть локальная машина для разработки, которая будет запускать grunt-watch для прикрепления идентификаторов ревизий к моим JS-файлам. Я git commit и git push переношу свое дерево в репозиторий git, а затем прошу производственный сервер git pull внести изменения из репозитория git, чтобы показать их посетителям сети.

Проблема в том, что я не хочу, чтобы мой репозиторий git сохранял разные имена файлов (из-за grunt-rev) при каждой фиксации. Это было бы плохо, потому что тогда я не смог бы выполнять git diff между фиксациями без того, чтобы мой экран не заполнялся содержимым файлов, которые появляются и исчезают, а также это могло бы (иногда) занимать намного больше памяти, чем если бы хранились только небольшие различия файлов.

Единственное решение, которое я вижу, это добавить каталог build, содержащий имена файлов с версиями, в мой .gitignore, чтобы не хранить эти файлы (с постоянно меняющимися именами файлов) в git. Но не означает ли это, что мне придется запустить grunt-watch и на моем производственном сервере, чтобы создать там каталог build с версионными именами файлов? Но это усложняется: новый процесс должен запускаться на удаленном сервере, возможно, с небольшими шансами на ошибку при обработке файлов. Не то решение, на которое я надеялся.

У вас есть другое решение? Что бы вы посоветовали мне сделать?


person alexk    schedule 06.07.2014    source источник


Ответы (1)


Чтобы решить эту проблему, я удаляю предыдущие файлы «сборки» перед фиксацией и развертыванием нового файла. Нет необходимости хранить старые сгенерированные файлы, потому что вы всегда можете пересобрать их с исходными файлами (которые находятся в git).

person pors    schedule 15.07.2014
comment
Если вы удалите /build перед фиксацией, то репозиторий git не будет содержать /build, так откуда рабочий сервер загружает /build? - person alexk; 20.07.2014
comment
Я храню /build в своем репозитории git и использую что-то вроде этого, чтобы очистить его от старых версий перед фиксацией: github.com/gruntjs/grunt-contrib-clean - person pors; 21.07.2014
comment
Вы имеете в виду, что в репозитории git есть пустой каталог /build? Или у него есть /build, который содержит только новые и актуальные файлы, а не старый мусор, который не был очищен? - person alexk; 21.07.2014
comment
Да, он содержит только последнюю сборку, поэтому вы можете использовать ее и на своем рабочем сервере. - person pors; 22.07.2014
comment
Итак, вы получаете разные имена файлов (содержащие идентификаторы ревизий) в каждом коммите в вашем репозитории git? - person alexk; 22.07.2014
comment
Для внешних файлов CSS/JS да, также предотвращает кэширование - person pors; 24.07.2014