#!/bin/sh dirname=$(dirname "$(readlink -f "$0")") browserify="$dirname/../node_modules/.bin/browserify" uglify="$dirname/../node_modules/.bin/uglifyjs" pretty_bytes="$dirname/../node_modules/.bin/pretty-bytes" gzip_size="$dirname/../node_modules/.bin/gzip-size" discify="$dirname/../node_modules/.bin/discify" usage () { cat << USAGE script/test-size Commands: g, gzip (default) Output gzip size m, minified Output size minified d, discify Run discify USAGE } # use zopfli for better compression if available gzip () { zopfli -h 2>/dev/null if [ $? -eq 0 ]; then zopfli "$1" -i1000 -c | wc -c else "$gzip_size" < "$1" fi } gzip_size () { mkdir -p tmp/ "$browserify" index.js \ -g unassertify \ -g yo-yoify \ -g es2020 \ -g uglifyify \ -p bundle-collapser/plugin \ | "$uglify" \ > tmp/bundle.min.js gzip tmp/bundle.min.js | "$pretty_bytes" rm -rf tmp/ } min_size () { "$browserify" index.js \ -g unassertify \ -g yo-yoify \ -g es2020 \ -g uglifyify \ -p bundle-collapser/plugin \ | "$uglify" \ | wc -c \ | "$pretty_bytes" } run_discify () { "$browserify" index.js --full-paths \ -g unassertify \ -g yo-yoify \ -g es2020 \ -g uglifyify \ | "$uglify" \ | "$discify" --open } # set CLI flags getopt -T > /dev/null if [ "$?" -eq 4 ]; then args="$(getopt --long help discify minified --options hmdg -- "$*")" else args="$(getopt h "$*")"; fi [ ! $? -eq 0 ] && { usage && exit 2; } eval set -- "$args" # parse CLI flags while true; do case "$1" in -h|--help) usage && exit 1 ;; -- ) shift; break ;; * ) break ;; esac done case "$1" in d|discify) shift; run_discify "$@" ;; m|minified) shift; printf "min: %s\n" "$(min_size)" "$@" ;; g|gzip|*) shift; printf "gzip: %s\n" "$(gzip_size)" "$@" ;; esac