- Introduced a new script to append version query parameters to JS imports, ensuring proper cache busting in production. - Updated Dockerfile to copy and execute the cache busting script during the build process. This enhancement simplifies cache management for JavaScript files in production environments.
46 lines
1.8 KiB
Bash
Executable file
46 lines
1.8 KiB
Bash
Executable file
#!/bin/sh
|
|
# Simple cache busting script - adds version query params to all JS imports
|
|
# Only runs during Docker build, not during local development
|
|
# This keeps development simple (no tools needed) while ensuring production cache busting
|
|
|
|
VERSION="${1:-dev}"
|
|
SRC_DIR="${2:-/usr/share/nginx/html}"
|
|
|
|
echo "Adding cache busting (v=${VERSION}) to JS imports in ${SRC_DIR}/src..."
|
|
|
|
# Find all JS files and add version query param to relative imports
|
|
find "$SRC_DIR/src" -type f -name "*.js" | while read -r file; do
|
|
# Skip if file doesn't exist
|
|
[ ! -f "$file" ] && continue
|
|
|
|
# Process file with sed to add version query params
|
|
# Pattern: from './path.js' or from "../path.js" or import('./path.js')
|
|
# Only match relative imports (./ or ../) ending in .js
|
|
# Skip if already has query params (contains ?)
|
|
|
|
# Handle single quote imports: from './path.js'
|
|
sed -i.bak \
|
|
-e "s|from '\\(\\.[./][^']*\\.js\\)'|from '\\1?v=${VERSION}'|g" \
|
|
-e "s|from '\\(\\.[./][^']*\\.js\\)?[^']*'|from '\\1?v=${VERSION}'|g" \
|
|
"$file"
|
|
|
|
# Handle double quote imports: from "./path.js"
|
|
sed -i.bak \
|
|
-e "s|from \"\\(\\.[./][^\"]*\\.js\\)\"|from \"\\1?v=${VERSION}\"|g" \
|
|
-e "s|from \"\\(\\.[./][^\"]*\\.js\\)?[^\"]*\"|from \"\\1?v=${VERSION}\"|g" \
|
|
"$file"
|
|
|
|
# Handle dynamic imports: import('./path.js')
|
|
sed -i.bak \
|
|
-e "s|import('\\(\\.[./][^']*\\.js\\)')|import('\\1?v=${VERSION}')|g" \
|
|
-e "s|import('\\(\\.[./][^']*\\.js\\)?[^']*')|import('\\1?v=${VERSION}')|g" \
|
|
-e "s|import(\"\\(\\.[./][^\"]*\\.js\\)\")|import(\"\\1?v=${VERSION}\")|g" \
|
|
-e "s|import(\"\\(\\.[./][^\"]*\\.js\\)?[^\"]*\")|import(\"\\1?v=${VERSION}\")|g" \
|
|
"$file"
|
|
|
|
# Remove backup file
|
|
rm -f "${file}.bak"
|
|
done
|
|
|
|
echo "Cache busting complete! All JS imports now include ?v=${VERSION}"
|
|
|