2020-01-09 21:39:16 +03:00
|
|
|
|
#!/bin/bash
|
|
|
|
|
#
|
|
|
|
|
# A development tool that use yuicompressor to compress JS files.
|
|
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
# Requirement:
|
|
|
|
|
# - wget
|
|
|
|
|
# - JRE
|
|
|
|
|
# - yuicompressor › https://github.com/yui/yuicompressor
|
|
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
# Usage: bash /path/to/js-compress.sh
|
|
|
|
|
#
|
|
|
|
|
# Process:
|
|
|
|
|
# input: /path/to/js/source.js --> output: /path/to/js/dist/source.min.js
|
|
|
|
|
#
|
|
|
|
|
# v2.0
|
|
|
|
|
# https://github.com/cotes2020/jekyll-theme-chirpy
|
|
|
|
|
# © 2020 Cotes Chung
|
|
|
|
|
# MIT Licensed
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
set -eu
|
|
|
|
|
|
|
|
|
|
PROJ_HOME=$(dirname $(dirname $(realpath "$0")))
|
|
|
|
|
|
|
|
|
|
YUICOMPRESSOR_SRC=https://github.com/yui/yuicompressor/releases/download/v2.4.8/yuicompressor-2.4.8.jar
|
|
|
|
|
YUICOMPRESSOR=${PROJ_HOME}/tools/package/yuicompressor-2.4.8.jar
|
|
|
|
|
JS_ROOT=${PROJ_HOME}/assets/js/
|
|
|
|
|
JS_SRC=${JS_ROOT}_src # JS source files
|
|
|
|
|
JS_DEST=${JS_ROOT}dist # Compressed output directory
|
|
|
|
|
PREFIX_LEN=${#JS_ROOT} # To beautify the log
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function init() {
|
|
|
|
|
if [[ ! -f $YUICOMPRESSOR ]]; then
|
|
|
|
|
if [[ ! -d "${PROJ_HOME}/tools/package/" ]]; then
|
|
|
|
|
mkdir -p "${PROJ_HOME}/tools/package/"
|
|
|
|
|
fi
|
|
|
|
|
wget "$YUICOMPRESSOR_SRC" -P "${PROJ_HOME}/tools/package/" -q
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function compress() {
|
|
|
|
|
# $1 is the source dir
|
|
|
|
|
# $2 is the destination dir
|
|
|
|
|
# $3 is the sub dir of source dir, nullable
|
|
|
|
|
if [[ -z ${3:+unset} ]]
|
|
|
|
|
then
|
|
|
|
|
sub_dir=""
|
|
|
|
|
else
|
|
|
|
|
sub_dir="$3/"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
for item in $(ls $1)
|
|
|
|
|
do
|
|
|
|
|
src="$1/$item"
|
|
|
|
|
if [[ -d "$src" ]]; then
|
|
|
|
|
compress $src $2 $item # recursion
|
|
|
|
|
else
|
2020-05-05 20:15:40 +03:00
|
|
|
|
|
|
|
|
|
if [[ -z $(git status $src -s) ]]; then
|
|
|
|
|
continue
|
|
|
|
|
fi
|
|
|
|
|
|
2020-01-09 21:39:16 +03:00
|
|
|
|
if [[ ! -d "$2/${sub_dir}" ]]; then
|
|
|
|
|
mkdir -p $2/${sub_dir}
|
|
|
|
|
fi
|
|
|
|
|
output=$2/${sub_dir}${item%.*}.min.js
|
|
|
|
|
echo "java -jar $(basename $YUICOMPRESSOR) ${src:$PREFIX_LEN} -o ${output:$PREFIX_LEN}"
|
|
|
|
|
java -jar $YUICOMPRESSOR $src -o $output
|
|
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
sub_dir="" # clean up for next recursion.
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
init
|
|
|
|
|
|
|
|
|
|
compress $JS_SRC $JS_DEST
|