Added a new script tool to compress JS.
This commit is contained in:
parent
b0d6513b7c
commit
3458b9ad82
1 changed files with 75 additions and 0 deletions
75
tools/js-compress.sh
Executable file
75
tools/js-compress.sh
Executable file
|
@ -0,0 +1,75 @@
|
||||||
|
#!/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
|
Loading…
Reference in a new issue