76 lines
1.7 KiB
Bash
76 lines
1.7 KiB
Bash
|
#!/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
|
|||
|
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
|