Skip to content

Instantly share code, notes, and snippets.

@jasdeepkhalsa
Created January 10, 2013 16:47
Show Gist options
  • Star 10 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save jasdeepkhalsa/4503658 to your computer and use it in GitHub Desktop.
Save jasdeepkhalsa/4503658 to your computer and use it in GitHub Desktop.
Sample Ant build.xml file for concat and minifying CSS & JS files by Addy Osmani
<?xml version="1.0" encoding="utf-8"?>
<project name="tutorialProject" default="prod" basedir="/Users/addy/buildTut/">
<description>Client-side ANT build file example</description>
<target name="-load.properties"
description="Set properties for this build">
<!--YUI Compressor location-->
<property name="yui.dir" value="${basedir}/yuicompressor/build/yuicompressor-2.4.2.jar"/>
<!--Source JS dir-->
<property name="src.js.dir" value="${basedir}/js"/>
<!--Source CSS dir-->
<property name="src.css.dir" value="${basedir}/css"/>
<!--Source Lint/Hint dir-->
<property name="jslint.js" value="${basedir}/lint/jshint.js"/>
<!--Rhino dir-->
<property name="js.jar" value="${basedir}/lint/rhino/js.jar"/>
<!--Output dir-->
<property name="build.dir" value="build"/>
<!--Build version information -->
<property name="build.major" value="1"/>
<property name="build.minor" value="1"/>
</target>
<!--Create build directories-->
<target name="-init" depends="-load.properties"
description="Create build directory structure">
<!--Create the time stamp for the new build-->
<tstamp>
<format property="TODAY" pattern="EEE, d MMM yyyy HH:mm:ss Z"/>
</tstamp>
<!--Delete previous build files-->
<delete dir="${build.dir}"/>
<!--Recreate the build directories-->
<mkdir dir="${build.dir}"/>
<mkdir dir="${build.dir}/js"/>
<mkdir dir="${build.dir}/css"/>
<!--Log the build timestamps to file-->
<echo file="${build.dir}/js/tstamp.txt" append="false">Build Date: ${TODAY}</echo>
<echo file="${build.dir}/css/tstamp.txt" append="false">Build Date: ${TODAY}</echo>
</target>
<!--JS Lint-->
<target depends="-init" name="-js.lint">
<pathconvert pathsep=" " property="jsfiles">
<fileset dir="${build.dir}/js/">
<include name="*.js"/>
</fileset>
</pathconvert>
<exec dir="${build.dir}/js/" executable="java" failonerror="true">
<arg line="-jar ${js.jar} ${jslint.js} ${jsfiles}"/>
</exec>
<echo>Finished</echo>
</target>
<!--Concatenate JS files-->
<target name="-js.concatenate" depends="-js.lint"
description="Concatenates specified JavaScript files">
<concat destfile="${build.dir}/js/concat.js">
<fileset
dir="${src.js.dir}"
includes="*.js"
excludes="first.js, second.js"/>
</concat>
<echo>Finished</echo>
</target>
<!--Concatenate CSS files-->
<target name="-css.concatenate" depends="-init"
description="Concatenates specified CSS files">
<concat destfile="${build.dir}/css/styles.css">
<!--first.css and second.css should be first in the concatenated file-->
<filelist
dir="${src.css.dir}"
files="first.css, second.css"/>
<!--All of the other files in the directory should appear after.-->
<fileset
dir="${src.css.dir}"
includes="*.css"
excludes="first.css, second.css"/>
</concat>
<echo>Finished</echo>
</target>
<!--Minify JS files-->
<target name="-js.minify" depends="-js.concatenate"
description="Minifies JavaScript files">
<apply executable="java" parallel="false" dest="${build.dir}/js">
<fileset
dir="${build.dir}/js"
includes="concat.js"/>
<arg line="-jar"/>
<arg path="${yui.dir}"/>
<srcfile/>
<arg line="-o"/>
<mapper type="glob" from="*.js" to="*-min.js"/>
<targetfile/>
</apply>
<echo>Finished</echo>
</target>
<!--Minify CSS files-->
<target name="-css.minify" depends="-css.concatenate"
description="Minifies CSS files">
<apply executable="java" parallel="false" dest="${build.dir}/css">
<fileset
dir="${build.dir}/css"
includes="styles.css"/>
<arg line="-jar"/>
<arg path="${yui.dir}"/>
<arg line="--line-break 0"/>
<srcfile/>
<arg line="-o"/>
<mapper type="glob" from="*.css" to="*-min.css"/>
<targetfile/>
</apply>
<echo>Finished</echo>
</target>
<!--Build-->
<target name="prod"
description="Builds project files for production use"
depends="
-load.properties,
-init,
-js.concatenate,
-js.lint,
-css.concatenate,
-js.minify,
-css.minify">
</target>
</project>
@cibarrac
Copy link

Hello there, what about line 15 and 16 ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment