Сжимайте файлы JS/CSS при развертывании с помощью Git

Я новичок в git. Кроме того, это мой первый проект, в котором я автоматизирую процесс развертывания. До сих пор было счастьем делать git push dev и загружать файлы, копировать файлы конфигурации и т. д.

Теперь я хочу минимизировать файлы JS/CSS при отправке на мой сервер разработки. Я подумывал установить на сервер какой-нибудь инструмент командной строки для минимизации и для каждого файла js/css в определенной папке, сжатия и сохранения на хуке git после получения.

Хороший ли это подход? (потому что я читал о добавлении сжатых файлов в репозиторий и других идеях, которые меня не совсем убеждают)

Если да, то какие инструменты лучше всего подходят для этой задачи?


person Nacho    schedule 03.12.2012    source источник
comment
Вы пытаетесь ускорить «git push»?   -  person the.malkolm    schedule 03.12.2012
comment
Нет, извините, цель состоит в том, чтобы минимизировать файлы js/css. Я поясню это в своем вопросе.   -  person Nacho    schedule 03.12.2012
comment
Хорошо, почему бы вам просто не минимизировать файлы на стороне клиента?   -  person the.malkolm    schedule 04.12.2012
comment
Я думаю, это верный вариант. И это часть того, о чем я прошу. Конечно, применяются некоторые ограничения: - Я не хочу создавать версии минифицированных файлов. -Я хочу использовать неминифицированные файлы при локальной разработке   -  person Nacho    schedule 04.12.2012
comment
Вы хотите, чтобы файлы были заменены уменьшенными версиями, или минифицированные файлы могут иметь другое имя? Как сейчас работает ваш процесс развертывания?   -  person Chronial    schedule 04.12.2012
comment
На данный момент я был бы счастлив, если бы мои файлы просто были перезаписаны. Кроме того, было бы проще, просто запустите скрипт, который минимизирует на сервере и перезаписывает. Я знаю, что это не идеально. Было бы лучше, если бы локальная среда загружала файл .js, а промежуточная загрузка файла .min.js, но я думаю, что это требует дополнительных усилий.   -  person Nacho    schedule 04.12.2012
comment
Я имею в виду, что если я внесу несколько изменений в способ загрузки js, я смогу просто загрузить file.js в dev и file.min.js в staging или даже загрузить все минимизированные concat-файлы одновременно. Второй вариант включает в себя немного больше доработок, которые я не хочу делать на данный момент, поэтому я хочу начать с реализации первого подхода (просто перезаписать исходные файлы), а затем, возможно, пойти еще дальше. Но я довольно уверен в этом вопросе.   -  person Nacho    schedule 04.12.2012


Ответы (3)


http://git-scm.com/book/ch7-2.html

Я предполагаю, что вы никогда не сделаете фиксацию на сервере, т. е. сервер будет использоваться только для извлечения обновленного мастера и никогда не обновит его. Этот трюк автоматически минимизирует любые файлы *.css при оформлении заказа:

# within repo
$ echo '*.css filter=minify' >> .git/info/attributes
$ git config filter.minify.clean  cat
$ git config filter.minify.smudge minify-command

Где minify-command должна быть командой, которая минимизирует файлы *.css, т.е.

$ cat foo.css | minify-command > foo-minified.css

Это близко к тому, что вы хотите?

person the.malkolm    schedule 04.12.2012
comment
Это безопасное предположение. 'dev' - это просто удаленное устройство, используемое для проверки мастера, а затем копировать файлы, которые мне нужны, в webroot. - person Nacho; 04.12.2012
comment
Кроме того, я думаю, что это может помочь, хотя мне придется немного прочитать, потому что я на самом деле не понимаю половину этого :$ - person Nacho; 04.12.2012
comment
Ага, не верьте мне! Дважды проверьте это сами :) - person the.malkolm; 04.12.2012
comment
Я отмечаю это как принятое, хотя я только что использовал компилятор закрытия Google и сжатые файлы в своем хуке после получения. - person Nacho; 07.12.2012

Переписывая файлы на dev и не имея мини-файлов в локальном репозитории, два репозитория всегда будут не синхронизированы друг с другом.

Возможно, вы захотите переосмыслить способ развертывания своего сайта для разработки, вместо того, чтобы отправлять его в разработку, вы можете, например, захотеть получить его из предварительно подготовленного репозитория.

person Peter van der Does    schedule 04.12.2012
comment
Но мой репозиторий разработчиков — это просто вспомогательный репо, созданный только для этой цели. Кроме того, я следовал этому руководству по настройке: toroid.org/ams/git-website-howto< /а> - person Nacho; 04.12.2012

Возможно, вы хотите добавить хук после проверки (или, может быть, это другой хук, в зависимости от вашей системы развертывания), а затем запустить с ним скрипт, который уменьшит ваши файлы.

Вы также можете использовать хук, чтобы проверить дату изменения соответствующих файлов, прежде чем делать это.

person Asenar    schedule 05.12.2012