2016-05-11 14:07:10 +07:00
|
|
|
#!/bin/sh
|
|
|
|
|
|
2016-06-20 22:23:11 +01:00
|
|
|
usage () {
|
|
|
|
|
cat << USAGE
|
|
|
|
|
script/test-size
|
|
|
|
|
Commands:
|
|
|
|
|
g, gzip (default) Output gzip size
|
|
|
|
|
m, minified Output size minified
|
|
|
|
|
d, discify Run discify
|
|
|
|
|
USAGE
|
|
|
|
|
}
|
|
|
|
|
|
2016-07-12 23:05:54 +02:00
|
|
|
# use zopfli for better compression if available
|
|
|
|
|
gzip () {
|
|
|
|
|
zopfli -h 2>/dev/null
|
|
|
|
|
if [ $? -eq 0 ]; then
|
|
|
|
|
zopfli "$1" -i1000 -c | wc -c
|
|
|
|
|
else
|
2016-07-19 21:40:14 -04:00
|
|
|
gzip-size < "$1"
|
2016-07-12 23:05:54 +02:00
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
2016-06-20 22:23:11 +01:00
|
|
|
gzip_size () {
|
2016-07-12 23:05:54 +02:00
|
|
|
mkdir -p tmp/
|
2016-07-19 21:40:14 -04:00
|
|
|
browserify index.js \
|
2016-06-20 22:23:11 +01:00
|
|
|
-g unassertify \
|
2016-07-01 14:26:37 +02:00
|
|
|
-g yo-yoify \
|
2016-06-20 22:23:11 +01:00
|
|
|
-g es2020 \
|
|
|
|
|
-g uglifyify \
|
|
|
|
|
-p bundle-collapser/plugin \
|
2016-07-19 21:40:14 -04:00
|
|
|
| uglifyjs \
|
2016-07-12 23:05:54 +02:00
|
|
|
> tmp/bundle.min.js
|
|
|
|
|
|
2016-07-19 21:40:14 -04:00
|
|
|
gzip tmp/bundle.min.js | pretty-bytes
|
2016-07-12 23:05:54 +02:00
|
|
|
rm -rf tmp/
|
2016-06-20 22:23:11 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
min_size () {
|
2016-07-19 21:40:14 -04:00
|
|
|
browserify index.js \
|
2016-06-20 22:23:11 +01:00
|
|
|
-g unassertify \
|
2016-07-01 14:26:37 +02:00
|
|
|
-g yo-yoify \
|
2016-06-20 22:23:11 +01:00
|
|
|
-g es2020 \
|
|
|
|
|
-g uglifyify \
|
|
|
|
|
-p bundle-collapser/plugin \
|
2016-07-19 21:40:14 -04:00
|
|
|
| uglifyjs \
|
2016-06-20 22:23:11 +01:00
|
|
|
| wc -c \
|
2016-07-19 21:40:14 -04:00
|
|
|
| pretty-bytes
|
2016-06-20 22:23:11 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
run_discify () {
|
2016-07-19 21:40:14 -04:00
|
|
|
browserify index.js --full-paths \
|
2016-06-20 22:23:11 +01:00
|
|
|
-g unassertify \
|
2016-07-01 14:26:37 +02:00
|
|
|
-g yo-yoify \
|
2016-06-20 22:23:11 +01:00
|
|
|
-g es2020 \
|
|
|
|
|
-g uglifyify \
|
2016-07-19 21:40:14 -04:00
|
|
|
| uglifyjs \
|
|
|
|
|
| discify --open
|
2016-06-20 22:23:11 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# set CLI flags
|
|
|
|
|
getopt -T > /dev/null
|
|
|
|
|
if [ "$?" -eq 4 ]; then
|
|
|
|
|
args="$(getopt --long help discify minified --options hmdg -- "$*")"
|
2016-07-12 15:24:36 +02:00
|
|
|
else
|
|
|
|
|
args="$(getopt h "$*")";
|
|
|
|
|
fi
|
2016-06-20 22:23:11 +01:00
|
|
|
[ ! $? -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
|