• 98012
  • 501
  • 147
Нравится блог?
Подписывайтесь!

Пакетное сжатие css/js файлов

Имеется: 160 CSS файлов, 327 JavaScript файлов

Задача: За короткое время, файлы, которые раскиданы по разным папкам, сжать YUI Compressor'ом!

Времени на написание, либо интегрирование специальных систем нет, поэтому было решено реализовать на win cmd

Решение задачи было разделено на несколько подзадач:

Упаковка

  1. Реккурсивный проход по папкам в поисках файлов с расширением *.css|*.js
  2. Оригинальный файл копируется в файл filename.(css|js).unpacked
  3. Упаковка очередного файла YUICompressor'ом
  4. Оригинальный файл заменяется сжатым

Распаковка

  1. Реккурсивный проход по папкам в поисках файлов с расширением *.unpacked
  2. Файл filename.(css|js).unpacked копируется в файл filename.(css|js)
  3. Файл filename.(css|js).unpacked удаляется

Примочки

  1. Упаковка и Восстановление логируется
  2. Путь к YUI, каталог с дистром, расширение unpacked файла, путь к log файлам регулируется в переменных в верху батника

Как использовать?

  1. Кидаем файлик в корневой каталог дистрибутива, в подпапках которого есть файлы сss/js
  2. Указываем путь к YUI Compressor (или у к своему инструменту)
  3. Запускаемstart_packing.bat

Распаковка

  1. Запускаем start_restore.bat

Заточка

  1. Замените в файле start_packing.bat cтроку №26 на свой инструмент
 
java -jar %YUI_DIR%/build/yuicompressor-2.4.6.jar %%i -o %%i
 

Deploy

  1. Перед заливкой в рабочую версию настроил в FileZilla (Вид->Фильтры по названию файлов) исключение на передачу файлов оканчивающихся на *.unpacked
  2. Залил
  3. Затем в dev версии восстанавливаем сжатые файлы
  4. Получается так, что в Production'е сжатые файлы, а в деве остаются оригинальные

Листинг

Файл start_packing.bat - упаковка

 
  1. @echo off
  2.  
  3. @SET DISTR_DIR=.
  4. @SET UNPACKED_FILE_EXT=unpacked
  5. @SET LOG_FILENAME=D:\work\webapps\citylife_packed\logs\log_%DATE%.txt
  6. @SET YUI_DIR=D:\work\webapps\yui
  7.  
  8. echo [ %DATE% as %TIME% ]
  9. echo Start of packing files in directory "%DISTR_DIR%"
  10. echo.
  11.  
  12. IF DEFINED %DISTR_DIR% @cd %DISTR_DIR%
  13. @echo Start of packing files in directory: "%DISTR_DIR%" >> %LOG_FILENAME%
  14. @echo.>>%LOG_FILENAME%
  15. @echo.>>%LOG_FILENAME%
  16.  
  17. FOR /R %%i IN (*.css, *.js) DO (
  18.  
  19. @echo [ %%i ] >> %LOG_FILENAME%
  20.  
  21. @echo Packing file "%%i"
  22. @copy %%i %%i.%UNPACKED_FILE_EXT%
  23. @echo - %TIME%: backuped as "%%i.%UNPACKED_FILE_EXT%" >> %LOG_FILENAME%
  24.  
  25. java -jar %YUI_DIR%/build/yuicompressor-2.4.6.jar %%i -o %%i
  26. @echo - %TIME%: successfully packed >> %LOG_FILENAME%
  27.  
  28. echo.>>%LOG_FILENAME%
  29. echo.>>%LOG_FILENAME%
  30. )
  31.  
  32. echo.
  33. echo [ %DATE% at %TIME% ]
  34. echo End of packing...
  35.  
  36. @echo [ %DATE% at %TIME% ] >> %LOG_FILENAME%
  37. @echo End of packing... >> %LOG_FILENAME%
  38.  
  39. echo.>>%LOG_FILENAME%
  40. echo.>>%LOG_FILENAME%
  41.  
  42. pause
 

Файл start_restore.bat - распаковка

 
  1. @echo off
  2.  
  3. @SET DISTR_DIR=files
  4. @SET UNPACKED_FILE_EXT=unpacked
  5. @SET LOG_FILENAME=D:\work\webapps\citylife_packed\logs\log_restore_%DATE%.txt
  6.  
  7. echo [ %DATE% as %TIME% ]
  8. echo Start of RESTORE packing files in directory "%DISTR_DIR%"
  9. echo.
  10.  
  11. @cd %DISTR_DIR%
  12.  
  13. @echo Start of RESTORE packing files in directory: "%DISTR_DIR%" >> %LOG_FILENAME%
  14. @echo.>>%LOG_FILENAME%
  15. @echo.>>%LOG_FILENAME%
  16.  
  17. FOR /R %%i IN (*.css, *.js) DO (
  18.  
  19. @echo %%i>> %LOG_FILENAME%
  20.  
  21. @copy %%i.%UNPACKED_FILE_EXT% %%i
  22. del %%i.%UNPACKED_FILE_EXT%
  23.  
  24. @echo %TIME%: successfully restored>> %LOG_FILENAME%
  25.  
  26. @echo.>>%LOG_FILENAME%
  27. @echo.>>%LOG_FILENAME%
  28. )
  29.  
  30. echo.
  31. echo [ %DATE% at %TIME% ]
  32. echo End of restoring...
  33.  
  34. @echo [ %DATE% at %TIME% ] >> %LOG_FILENAME%
  35. @echo End of restoring... >> %LOG_FILENAME%
  36. echo.>>%LOG_FILENAME%
  37. echo.>>%LOG_FILENAME%
  38.  
  39. pause
 

Скорость

  • 160 CSS файлов - сжато за 50 секунд
  • 327 JavaScript файлов - сжато за 3 минуты
31 октября 2011, 18:36
1380

Загрузка...
Loading...

Комментарии

Блок для кода в редакторе юви выглядел по-другому, с отступами, ужс)
тут бесполезно постить код, редактор все херачит
327 жаваскрипт файлов.. это жесть)))
Или это все нереально плохо организовано, что такое количество файлов стилей и скриптов, или это нереально большой проект.
Браузерная игра что ли какая-нибудь?
Ошибаетесь, много файлов не значит неорганизованность, как раз таки модульность это хорошо, но с линковкой еще круче
t-sh
0
0
Гугловский Клоуш + ГЗИП как-то роднее, удобнее и оптимальнее :)

Оставьте свой комментарий

Спасибо за открытие блога в Yvision.kz! Чтобы убедиться в отсутствии спама, все комментарии новых пользователей проходят премодерацию. Соблюдение правил нашей блог-платформы ускорит ваш переход в категорию надежных пользователей, не нуждающихся в премодерации. Обязательно прочтите наши правила по указанной ссылке: Правила

Также можно нажать Ctrl+Enter

Популярные посты

До каких пор чиновники будут игнорировать защиту детей?

До каких пор чиновники будут игнорировать защиту детей?

До каких пор Уполномоченный по правам ребенка, как институт во всем мире стоящий на страже жизни и прав детей, в нашей стране будет выполнять представительские функции?
AliyaSadyrbaeva
25 июля 2017 / 18:27
  • 10764
  • 6
Зачем эмигрировать в Россию? Лично я никогда не понимал этой странной мечты

Зачем эмигрировать в Россию? Лично я никогда не понимал этой странной мечты

Некоторые мои знакомые, мечтают уехать в Россию и побыстрее получить гражданство. Кому мы там сдались? Есть замечательная поговорка: "Где родился - там и пригодился".
Washington
25 июля 2017 / 12:15
Что происходит в казахстанской правоохранительной системе под видом борьбы с коррупцией

Что происходит в казахстанской правоохранительной системе под видом борьбы с коррупцией

За день до своей гибели прямо около памятника жертвам политических репрессий 1937-го Жампозов сказал жене, что он – жертва точно таких же репрессий.
openqazaqstan
24 июля 2017 / 10:18
  • 3433
  • 12
Если вам отвечают на казахском языке – ситуация с точки зрения законодательства

Если вам отвечают на казахском языке – ситуация с точки зрения законодательства

Я своим постом не собираюсь критиковать кого-либо, что люди знают или не знают казахский или русский язык. Я выражаю своё мнение с точки зрения законодательства о языках.
Advokot
25 июля 2017 / 13:50
  • 3245
  • 31
Мужчины Люксембурга и Казахстана: «У нас они уже в 35 добиваются статуса»

Мужчины Люксембурга и Казахстана: «У нас они уже в 35 добиваются статуса»

Что касается парней, так это вообще отдельная тема. Они для меня загадка. Уже год пытаюсь понять ход их мыслей. Для нас, казахов, немного сложно понять, почему человек в 35-36 лет, до сих пор не нашел смысла жизни.
AASh
24 июля 2017 / 15:19
  • 2361
  • 23
Легендарный вокалист «Linkin Park» унёс за собой молодость десятков тысяч людей

Легендарный вокалист «Linkin Park» унёс за собой молодость десятков тысяч людей

Самое грустное, что, как и всегда в таких случаях, скоро на Честера начнут изливаться потоки грязи - что он был наркоманом, или что-то подобное (как в случае со многими знаменитостями).
demonica
21 июля 2017 / 15:13
  • 2050
  • 51
Алматы глазами астанчанки: «У вас жара за 30! Вы не то, что южные – вы Африка!»

Алматы глазами астанчанки: «У вас жара за 30! Вы не то, что южные – вы Африка!»

Все дороги ведут в Алматы. Хотелось бы поспорить, учитывая, как я насмешливо провожала друзей или коллег, которые покидали родную Астанушечку и переезжали «на юг».
SogdiK
21 июля 2017 / 18:25
  • 1908
  • 34
Хан Ордасы – ставка Жангир-хана. Здесь была открыта первая в Казахстане типография

Хан Ордасы – ставка Жангир-хана. Здесь была открыта первая в Казахстане типография

Ханская ставка Жангир-хана в селе Хан Ордасы Бокейординского района Западно-Казахстанской области - это одно из самых интересных исторических мест Казахстана.
theYakov
26 июля 2017 / 5:34
  • 1466
  • 3
Королева пепла. Рекап 2 серии 7 сезона сериала «Игра престолов»

Королева пепла. Рекап 2 серии 7 сезона сериала «Игра престолов»

Всем привет! Продолжаем традиционную серию рекапов, посвящённых, пожалуй, главному сериалу современности - "Игре престолов". Спойлеры обязательны, иначе и быть не может!
Seattle
25 июля 2017 / 16:15
  • 1480
  • 22