]> source.dussan.org Git - jquery.git/commitdiff
Landing pull request 511. Adding a little Makefile jQuery sizing utility to easily...
authorCorey Frang <gnarf@gnarf.net>
Mon, 19 Sep 2011 19:27:43 +0000 (15:27 -0400)
committertimmywil <timmywillisn@gmail.com>
Mon, 19 Sep 2011 19:27:43 +0000 (15:27 -0400)
More Details:
 - https://github.com/jquery/jquery/pull/511

.gitignore
Makefile
build/sizer.js [new file with mode: 0644]

index 6cd547974ae903f3ff1a8951923263ecbc60d50a..6ee92f269c386d01ffc18d5218de7db80f3db747 100644 (file)
@@ -6,3 +6,4 @@ dist
 *.patch
 /*.html
 .DS_Store
+build/.sizecache.json
index 06cee5de3ff8479e2b29e6b08b171989881f1388..59f63bdd9b60760ca59fda2da136789741abd55b 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -44,7 +44,7 @@ DATE=$(shell git log -1 --pretty=format:%ad)
 
 all: update_submodules core
 
-core: jquery min lint
+core: jquery min lint size
        @@echo "jQuery build complete."
 
 ${DIST_DIR}:
@@ -73,6 +73,15 @@ lint: jquery
                echo "You must have NodeJS installed in order to test jQuery against JSLint."; \
        fi
 
+size: jquery min
+       @@if test ! -z ${JS_ENGINE}; then \
+               gzip -c ${JQ_MIN} > ${JQ_MIN}.gz; \
+               wc -c ${JQ} ${JQ_MIN} ${JQ_MIN}.gz | ${JS_ENGINE} ${BUILD_DIR}/sizer.js; \
+               rm ${JQ_MIN}.gz; \
+       else \
+               echo "You must have NodeJS installed in order to size jQuery."; \
+       fi
+
 min: jquery ${JQ_MIN}
 
 ${JQ_MIN}: ${JQ}
@@ -84,7 +93,6 @@ ${JQ_MIN}: ${JQ}
        else \
                echo "You must have NodeJS installed in order to minify jQuery."; \
        fi
-       
 
 clean:
        @@echo "Removing Distribution directory:" ${DIST_DIR}
diff --git a/build/sizer.js b/build/sizer.js
new file mode 100644 (file)
index 0000000..2372b5f
--- /dev/null
@@ -0,0 +1,36 @@
+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() {
+       console.log( "jQuery Size - compared to last make" );
+       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();
+});
\ No newline at end of file