Shell скрипт для минимизации *.js и *.css файлов.

10 марта 2009
Просмотров: 6532Обсудить
Рубрика: Программирование

Оптимизация - это всегда хорошо, главное не переборщить ;)

Начинающие веб программисты наверное еще плохо понимают зачем нужно оптимизировать  (в нашем случае - минимизировать) файлы скриптов и стилей. Тем нимение умные люди (http://webo.in/articles/clientside2007/common-pages-optimization/) утверждают, что без этого - никуда.

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

Название статьи , наверное, немного неверное, поскольку всю работу по оптимизации будет делать не сам скрипт, а yuicompressor ( http://developer.yahoo.com/yui/compressor/ ). Однако скрипт позволит делать это с меньшими усиилями ;)

зы:примеры я буду приводить для Ubuntu 8.10, но думаю проблем с другой осью не будет ;)

Для начала нам нужен сам минимизатор. Скачать его мона с сайта "производителя" (http://www.julienlecomte.net/yuicompressor/yuicompressor-2.4.2.zip).На момент написания статьи последняя версия была 2.4.2  Разархивируем куда-то, потом копируем jar файл из yuicompressor-2.4.2/build/yuicompressor-2.4.2.jar в директорию, в которой вы будете "мухлевать" с файликами.

Как наверное понятно , нам понадобится java  машина для выполнения скрипта. Описание установки самой джавы мы опустим, скажем, что прочитать об этом можно:

  • http://www.javalobby.org/java/forums/t72809.html
  • http://www.google.com.ua/search?hl=ru&q=ubuntu+java+install&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&meta=&aq=1&oq=ubuntu+java

Для простоты переименуем (или скопируем ) испольняемый файл (если. например, появится новая версия минимизатора, чтоб не править скрипт)

cp yuicompressor-2.4.2.jar yuicompressor.jar

Создадим наш файлик и сделаем его исполняемым:

touch minimize
chmod +x minimize

Вашим любимым редактором впихаем туда следующие строки:

#!/bin/sh
#Filename: minimize
#Description: Script for minimize *.js and *.css files
#Author: YAAP
#Minimize utils: yuicompressor (http://developer.yahoo.com/yui/compressor/)
#Usage: minimize file replace
#       if replace = false - the new file will be created as filename-min.ext , else the original file will be replaced with new!
file=$1         # original file
if [ -f $file ]; then           # if file is a file
ext=."${file##*.}"              # search extention of the file
filename="${file%$ext}"         # search filename
java -jar yuicompressor.jar $file -o "$filename"-min"$ext"              # generete new minimized file
fi
replace=$2;             # replace variable
if [ ${#replace} = "0" ]; then          # if lenght == 0  then replace=true - default value
replace="true"
fi
if [ $replace = "true" ]; then          # if true - must replace original file with new
cp "$filename"-min"$ext" $file          # replace file
rm "$filename"-min"$ext"                # remove temp file
fi
exit 0

Сам скрипт коментировать не будем, поскольку там все очень и очень просто + в коде есть некоторые коментарии. Намного интереснее попробовать поюзать его.

Скопируйте с папку с минимизатором любой свой jacascript или css файл (например test.js)

У скрипта есть 2 режима работы - создание нового сжатого файла или замена исходного.

1) Создание нового файла

./minimize test.js false

В результате будет создан файл test-min.js. Посмотрите, если не боитесь, его содержимое ;)

cat ./test-min.js

2) Замена исходника. (default)

./minimize test.js

Эта команда заменит исходный файлик на новый, но меньшего размера ;)

Если дефолтный режим работы вас не устраивает - измените немного скрипт, чтоб файл перезаписывался только если 2-й входной параметр скрипта был "true"

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru
Метки: , ,


Комментариев: 2
Подписаться на комментарии по RSS
  • #12009-10-12 в 00:04:45Владислав Ракитов (анонимно)

    Хотель бы увидеть здесь нечто серьезнее.


  • #22009-11-06 в 14:06:14YAAP (анонимно)

    Сейчас планирую написать онлайн утилиту, которая будет по урлу выбирать стили\скрипты и оптимизировать их по высшеописанному принципу ;)


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

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email.
(При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д.)



grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

(обязательно)