Build: ant size will now give you a report detailing differences in size since the last time you ran the report

(cherry picked from commit 264139b225)

Conflicts:

	build/build.xml
This commit is contained in:
Corey Frang 2011-10-17 14:47:20 -05:00
parent db1e73e3db
commit b09eebea72
3 changed files with 188 additions and 109 deletions

2
.gitignore vendored
View File

@ -1,4 +1,6 @@
build/dist build/dist
build/size
build/build/.sizecache.json
docs docs
.project .project
*~ *~

View File

@ -32,6 +32,7 @@
<property name="docs.dir" value="${dist.dir}/docs/" /> <property name="docs.dir" value="${dist.dir}/docs/" />
<property name="min.dir" value="${dist.dir}/ui/minified" /> <property name="min.dir" value="${dist.dir}/ui/minified" />
<property name="size.dir" value="size" />
<property name="concatenated" value="jquery-ui" /> <property name="concatenated" value="jquery-ui" />
<property name="concatenated.i18n" value="jquery-ui-i18n" /> <property name="concatenated.i18n" value="jquery-ui-i18n" />
@ -161,6 +162,8 @@
<mkdir dir="${min.dir}/i18n/" /> <mkdir dir="${min.dir}/i18n/" />
<mkdir dir="${dist.dir}/themes/base/minified" /> <mkdir dir="${dist.dir}/themes/base/minified" />
<parallel threadsperprocessor="1">
<apply executable="java" parallel="false"> <apply executable="java" parallel="false">
<fileset dir="${dist.dir}/ui" includes="*.js" /> <fileset dir="${dist.dir}/ui" includes="*.js" />
<arg line="-jar" /> <arg line="-jar" />
@ -197,6 +200,8 @@
<targetfile/> <targetfile/>
</apply> </apply>
</parallel>
<replaceregexp match=".css" replace=".min.css" flags="g"> <replaceregexp match=".css" replace=".min.css" flags="g">
<fileset dir="${dist.dir}/themes/base/minified/"> <fileset dir="${dist.dir}/themes/base/minified/">
<include name="*.base.min.css"/> <include name="*.base.min.css"/>
@ -258,6 +263,8 @@
<mkdir dir="${docs.dir}" /> <mkdir dir="${docs.dir}" />
<property name="url" value="http://docs.jquery.com/action/render/UI/API/${release.version}/" /> <property name="url" value="http://docs.jquery.com/action/render/UI/API/${release.version}/" />
<parallel threadcount="8">
<get src="${url}Draggable" dest="${docs.dir}draggable.html" /> <get src="${url}Draggable" dest="${docs.dir}draggable.html" />
<get src="${url}Droppable" dest="${docs.dir}droppable.html" /> <get src="${url}Droppable" dest="${docs.dir}droppable.html" />
<get src="${url}Resizable" dest="${docs.dir}resizable.html" /> <get src="${url}Resizable" dest="${docs.dir}resizable.html" />
@ -269,8 +276,11 @@
<get src="${url}Button" dest="${docs.dir}button.html" /> <get src="${url}Button" dest="${docs.dir}button.html" />
<get src="${url}Datepicker" dest="${docs.dir}datepicker.html" /> <get src="${url}Datepicker" dest="${docs.dir}datepicker.html" />
<get src="${url}Dialog" dest="${docs.dir}dialog.html" /> <get src="${url}Dialog" dest="${docs.dir}dialog.html" />
<get src="${url}Menu" dest="${docs.dir}menu.html" />
<get src="${url}Progressbar" dest="${docs.dir}progressbar.html" /> <get src="${url}Progressbar" dest="${docs.dir}progressbar.html" />
<get src="${url}Slider" dest="${docs.dir}slider.html" /> <get src="${url}Slider" dest="${docs.dir}slider.html" />
<get src="${url}Spinner" dest="${docs.dir}spinner.html" />
<get src="${url}Tooltip" dest="${docs.dir}tooltip.html" />
<get src="${url}Tabs" dest="${docs.dir}tabs.html" /> <get src="${url}Tabs" dest="${docs.dir}tabs.html" />
<get src="${url}Position" dest="${docs.dir}position.html" /> <get src="${url}Position" dest="${docs.dir}position.html" />
@ -302,6 +312,7 @@
<get src="http://docs.jquery.com/action/render/UI/Effects/Shake" dest="${docs.dir}effect-shake.html" /> <get src="http://docs.jquery.com/action/render/UI/Effects/Shake" dest="${docs.dir}effect-shake.html" />
<get src="http://docs.jquery.com/action/render/UI/Effects/Size" dest="${docs.dir}effect-size.html" /> <get src="http://docs.jquery.com/action/render/UI/Effects/Size" dest="${docs.dir}effect-size.html" />
<get src="http://docs.jquery.com/action/render/UI/Effects/Transfer" dest="${docs.dir}effect-transfer.html" /> <get src="http://docs.jquery.com/action/render/UI/Effects/Transfer" dest="${docs.dir}effect-transfer.html" />
</parallel>
</target> </target>
<target name="themes-download"> <target name="themes-download">
@ -347,6 +358,37 @@
<echo message="All trailing spaces removed." /> <echo message="All trailing spaces removed." />
</target> </target>
<target name="size" depends="copy, minify, replace-version, prepend-header" description="Report sizes of files">
<echo message="Collecting files to size" />
<mkdir dir="${size.dir}" />
<copy todir="${size.dir}">
<fileset dir="${dist.dir}/ui" includes="*.js" />
<fileset dir="${dist.dir}/ui/i18n" includes="*.js" />
<fileset dir="${dist.dir}/ui/minified" includes="*.js" />
<fileset dir="${dist.dir}/ui/minified/i18n" includes="*.js" />
<fileset dir="${dist.dir}/themes/base" includes="*.css" />
<fileset dir="${dist.dir}/themes/base/minified" includes="*.css" />
</copy>
<echo message="GZipping Minified" />
<parallel threadsperprocessor="2">
<apply executable="gzip">
<fileset dir="${size.dir}" includes="*.min.js" />
<fileset dir="${size.dir}" includes="*.min.css" />
<arg value="-c" />
<srcfile />
<redirector>
<outputmapper id="out" type="glob" from="*" to="${size.dir}/*.gz"/>
</redirector>
</apply>
</parallel>
<echo message="Comparing file size with previous build" />
<exec executable="bash">
<arg value="-c" />
<arg value="wc -c ${size.dir}/* | `which node nodejs` build/sizer.js" />
</exec>
<delete dir="${size.dir}" />
</target>
<target name="cdn"> <target name="cdn">
<delete dir="${cdndist.dir}" /> <delete dir="${cdndist.dir}" />
<mkdir dir="${cdndist.dir}" /> <mkdir dir="${cdndist.dir}" />

35
build/build/sizer.js Normal file
View File

@ -0,0 +1,35 @@
var fs = require( "fs" ),
stdin = process.openStdin(),
rsize = /(\d+).*?(jquery\S+)/g,
oldsizes = {},
sizes = {};
try {
oldsizes = JSON.parse( fs.readFileSync( __dirname + "/.sizecache.json", "utf8" ) );
} catch(e) {
oldsizes = {};
};
stdin.on( "data" , function( chunk ) {
var match;
while ( match = rsize.exec( chunk ) ) {
sizes[ match[2] ] = parseInt( match[1], 10 );
}
});
function lpad( str, len, chr ) {
return ( Array(len+1).join( chr || " ") + str ).substr( -len );
}
stdin.on( "end", function() {
fs.writeFileSync( __dirname + "/.sizecache.json", JSON.stringify( sizes, true ), "utf8" );
for ( var key in sizes ) {
var diff = oldsizes[ key ] && ( sizes[ key ] - oldsizes[ key ] );
if ( diff > 0 ) {
diff = "+" + diff;
}
console.log( "%s %s %s", lpad( sizes[ key ], 8 ), lpad( diff ? "(" + diff + ")" : "(-)", 8 ), key );
}
process.exit();
});