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

Балтабек Бекенов 2011 M10 31
1425
6
4
0

Имеется: 160 CSS файлов, 327 JavaScript файлов Задача: За короткое время, файлы, которые раскиданы по разным папкам, сжать YUI Compressor'ом! Времени на написание, либо интегрирование специальных...

Имеется: 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 минуты

Оцените пост

4

Комментарии

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