hakurei.app/process_static
Danny Lin dff5a750d1 Switch to new bundled fastboot.js
This simplifies cache busting greatly without needing to do further
processing on any fastboot.js code before deploying. It also removes the
need for a non-module script with global scope.
2021-01-23 23:08:12 -05:00

33 lines
1.1 KiB
Bash
Executable File

#!/bin/bash
set -o errexit -o nounset -o pipefail
shopt -s dotglob extglob globstar
export PATH="$PWD/node_modules/.bin:$PATH"
rm -rf static_tmp
cp -a static static_tmp
rm -rf static_tmp/js/fastboot/{!(dist),dist/!(fastboot.min.js|libs)}
for file in static_tmp/**/*.@(json|webmanifest); do
json_reformat -m < "$file" | sponge "$file"
done
find static_tmp -name '*.html' -exec html-minifier --collapse-whitespace \
--process-scripts "application/ld+json" --collapse-boolean-attributes \
--remove-attribute-quotes --remove-comments --remove-empty-attributes \
--remove-redundant-attributes --remove-script-type-attributes \
--remove-style-link-type-attributes --sort-attributes --sort-class-name {} -o {} \;
./generate_feed.py
for file in static_tmp/**/*.@(atom|xml); do
xmllint --noblanks "$file" --output "$file"
done
find static_tmp -name '*.css' -exec csso {} -o {} \;
find static_tmp -name '*.js' -exec terser --module -cmo {} {} \;
find static_tmp -regex '.+\.\(atom\|css\|html\|ico\|js\|json\|pdf\|svg\|txt\|webmanifest\|xml\)' \
-exec zopfli {} \; -exec touch -r {} {}.gz \; \
-exec brotli -k {} \;