How to Compile JS & CSS to one file for best performance


To get the best performance on your website you need to reduce external call like js & css files.
I build little BASH script that compile all your files to one JS file and one CSS file.
We will use some tools like : Google Closure & dos2unix
1. Create “build” folder in your application.
2. Create the files “js_list.txt” and “css_list.txt” and write line by line all your js & css files.
3. Download Google Closure and copy the file “compiler.jar” to this folder.
4. Create the file “build.sh”
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/bin/bash
# (c) Copyright by Garry Lachman - http://www.garry-lachman.com
# GNU/GPL
echo "" > full.js
echo "" > full.css
# JS
echo -e "\nBuild JS\n----------------"
while read line ; do
        JS_FILES[$index]="$line"
        index=$(($index+1))
done < js_list.txt

for f in "${JS_FILES[@]}"
do
        cat "../js/$f" >> full.js
        echo ";" >> full.js
        echo -e "* $f"
done

#CSS
echo -e "\nBuild CSS\n----------------"
index=0
while read line ; do
        CSS_FILES[$index]="$line"
        index=$(($index+1))
done < css_list.txt

for f in "${CSS_FILES[@]}"
do
        cat "../css/$f" >> full.css
        echo -e "* $f"
done

echo -e "\n"
echo -n "Compile JS"
java -jar compiler.jar --language_in ECMASCRIPT5 --compilation_level WHITESPACE_ONLY --js full.js --js_output_file full-compiled.js
echo " - Done"
echo -n "CSS Dos2Unix Format"
dos2unix full.css full.css
echo -e "Moving Compiled Files"
cp full.js ../js/full.js
cp full-compiled.js ../js/full-compiled.js
cp full.css ../css/full.css
5. I use the parent folders “js” and “css” but you can change it to your folder, just replace “../js/” & “../css/” to your path
6. Executing permission:
1
chmod +x build.sh
7. Run the code
1
./build.sh
You will see the output like:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@web-serv build]# ./build.sh

Build JS
----------------
* flash_wrapper/swfobject.js
* jquery.tools.local.min.js
* jquery.dropkick-1.0.0.js

Build CSS
----------------
* style.css
* components.css

Compile JS - Done
CSS Dos2Unix Formatdos2unix: converting file full.css to UNIX format ...
dos2unix: converting file full.css to UNIX format ...
Moving Compiled Files
Now check the files: full.css & full-compiled.js
Have fun :)

0 comments:

Post a Comment