Improve compress script
Some checks failed
PHP Unit / PHPUnit test suite (pull_request) Has been cancelled
Laravel Pint / Laravel Pint (pull_request) Has been cancelled

Generate zst and br files, then  remove any that are actually larger
than the source file
This commit is contained in:
Jonny Barnes 2024-12-28 11:07:48 +00:00
parent 70e5b9bec7
commit cf6e65cc03
Signed by: jonny
SSH key fingerprint: SHA256:CTuSlns5U7qlD9jqHvtnVmfYV3Zwl2Z7WnJ4/dqOaL8
16 changed files with 31 additions and 3 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
public/assets/js/app.js.zst Normal file

Binary file not shown.

Binary file not shown.

View file

@ -1,13 +1,41 @@
#!/usr/bin/env zsh
if ! type fd &> /dev/null; then
if ! (( $+commands[fd] )) &> /dev/null; then
echo "fd not installed"
exit 1
fi
if ! type brotli &> /dev/null; then
if ! (( $+commands[brotli] )) &> /dev/null; then
echo "brotli not installed"
exit 1
fi
fd -e css -e js --search-path ./public/assets --type f -x brotli --force --best --output={}.br {}
if ! (( $+commands[zstd] )) &> /dev/null; then
echo "zstd not installed"
exit 1
fi
# Make .br files
fd --extension css --extension js --search-path ./public/assets --type f --exec brotli --force --best --output={}.br {}
# Make .zst files
fd --extension css --extension js --search-path ./public/assets --type f --exec zstd --quiet --force --ultra -22 --exclude-compressed {} -o {}.zst
# Remove files that actually got bigger!
fd --extension br --extension zst --search-path ./public/assets --type f --exec sh -c '
for file; do
src="${file%.br}"
src="${src%.zst}"
if [ -f "$src" ]; then
# Get file sizes using stat with cross-platform compatibility
if [ "$(uname)" = "Darwin" ]; then
file_size=$(stat -f%z "$file")
src_size=$(stat -f%z "$src")
else
file_size=$(stat -c%s "$file")
src_size=$(stat -c%s "$src")
fi
# Compare sizes and conditionally echo rm command
[ "$file_size" -ge "$src_size" ] && rm "$file"
fi
done
' _ {}