set -e # Get against which ref to diff if git rev-parse --verify HEAD >/dev/null 2>&1 then against=HEAD else # Something weird, initial commit exit 1 fi # List all the modified CSS and JS files (not in output path) css_js_files=$(git diff-index --name-only $against | grep -e '.\(jsx\?\)\|\(s\?css\)$' | grep -v "^public") # Nothing more to do if no JS files was committed if [ -z "$css_js_files" ] then exit 0 fi # Else, rebuild as production, run tests and add files echo "Rebuilding dist JavaScript files…" npm test npm run clean npm run build:prod git add public