---
title: "Пакетное сжатие css/js файлов"
description: "Имеется: 160 CSS файлов, 327 JavaScript файлов Задача: За короткое время, файлы, которые раскиданы ..."
author: "cybri0nix"
published: "2011-10-31T06:36:54+00:00"
modified: "2011-10-31T06:36:54+00:00"
locale: "ru"
canonical_url: "https://yvision.kz/post/paketnoe-szhatie-css-js-faylov-202385"
markdown_url: "https://yvision.kz/post/paketnoe-szhatie-css-js-faylov-202385/markdown"
site_name: "Yvision.kz"
---

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

> Имеется: 160 CSS файлов, 327 JavaScript файлов Задача: За короткое время, файлы, которые раскиданы ...

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

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

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

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

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

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

#### Распаковка - Запускаем start_restore.bat

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

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

#### Листинг

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

 

- @echo off
- @SET DISTR_DIR=.
- @SET UNPACKED_FILE_EXT=unpacked
- @SET LOG_FILENAME=D:\work\webapps\citylife_packed\logs\log_%DATE%.txt
- @SET YUI_DIR=D:\work\webapps\yui
- echo [ %DATE% as %TIME% ]
- echo Start of packing files in directory "%DISTR_DIR%"
- echo.

- IF [DEFINED](http://www.php.net/defined) %DISTR_DIR% @cd %DISTR_DIR%
- @echo Start of packing files in directory: "%DISTR_DIR%" >> %LOG_FILENAME%
- @echo.>>%LOG_FILENAME%
- @echo.>>%LOG_FILENAME%
- FOR /R %%i IN (*.css, *.js) DO (
- @echo [ %%i ] >> %LOG_FILENAME%
- @echo Packing [file](http://www.php.net/file) "%%i"
- @[copy](http://www.php.net/copy) %%i %%i.%UNPACKED_FILE_EXT%
- @echo - %TIME%: backuped as "%%i.%UNPACKED_FILE_EXT%" >> %LOG_FILENAME%
- java -jar %YUI_DIR%/build/yuicompressor-2.4.6.jar %%i -o %%i
- @echo - %TIME%: successfully packed >> %LOG_FILENAME%
- echo.>>%LOG_FILENAME%
- echo.>>%LOG_FILENAME%
- )
- echo.

- echo [ %DATE% at %TIME% ]
- echo [End](http://www.php.net/end) of packing...
- @echo [ %DATE% at %TIME% ] >> %LOG_FILENAME%
- @echo [End](http://www.php.net/end) of packing... >> %LOG_FILENAME%
- echo.>>%LOG_FILENAME%
- echo.>>%LOG_FILENAME%
- pause

 

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

 

- @echo off
- @SET DISTR_DIR=files
- @SET UNPACKED_FILE_EXT=unpacked
- @SET LOG_FILENAME=D:\work\webapps\citylife_packed\logs\log_restore_%DATE%.txt
- echo [ %DATE% as %TIME% ]
- echo Start of RESTORE packing files in directory "%DISTR_DIR%"
- echo.
- @cd %DISTR_DIR%
- @echo Start of RESTORE packing files in directory: "%DISTR_DIR%" >> %LOG_FILENAME%
- @echo.>>%LOG_FILENAME%
- @echo.>>%LOG_FILENAME%
- FOR /R %%i IN (*.css, *.js) DO (
- @echo %%i>> %LOG_FILENAME%
- @[copy](http://www.php.net/copy) %%i.%UNPACKED_FILE_EXT% %%i
- del %%i.%UNPACKED_FILE_EXT%
- @echo %TIME%: successfully restored>> %LOG_FILENAME%
- @echo.>>%LOG_FILENAME%
- @echo.>>%LOG_FILENAME%
- )
- echo.

- echo [ %DATE% at %TIME% ]
- echo [End](http://www.php.net/end) of restoring...
- @echo [ %DATE% at %TIME% ] >> %LOG_FILENAME%
- @echo [End](http://www.php.net/end) of restoring... >> %LOG_FILENAME%
- echo.>>%LOG_FILENAME%
- echo.>>%LOG_FILENAME%
- pause

#### Скорость

- 160 CSS файлов - сжато за 50 секунд

- 327 JavaScript файлов - сжато за 3 минуты

---

Source: [https://yvision.kz/post/paketnoe-szhatie-css-js-faylov-202385](https://yvision.kz/post/paketnoe-szhatie-css-js-faylov-202385)