#!/bin/sh 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 \ | uglifyjs \ > 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 \ | uglifyjs \ | wc -c \ | pretty-bytes } run_discify () { browserify index.js --full-paths \ -g unassertify \ -g yo-yoify \ -g es2020 \ -g uglifyify \ | uglifyjs \ | 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