2026-09-18 07:50:09 -04:00
|
|
|
#!/bin/sh
|
|
|
|
|
# Build minified bundles from the JSX sources (matches what's deployed).
|
|
|
|
|
set -e
|
|
|
|
|
cd "$(dirname "$0")"
|
|
|
|
|
for f in components tweaks-panel app; do
|
|
|
|
|
npx -y esbuild@0.24 "$f.jsx" --loader:.jsx=jsx --jsx=transform --minify --target=es2020 --outfile="$f.min.js" --log-level=warning
|
|
|
|
|
done
|
SEO: local AV/DC targeting, static service + case-study pages
- services-data.js: 4 service landing pages (commercial AV install DC,
broadcast integration, LED/XR, conference room AV) with FAQ + areas
- build-pages.mjs: node-stdlib generator -> /services/<slug>/,
/projects/<slug>/, index pages, sitemap.xml; Service/FAQPage/Article/
BreadcrumbList JSON-LD on every page
- index.html: title/description/OG retargeted to 'Commercial AV &
Broadcast Systems Integrator - Washington, DC'; ProfessionalService
schema gains geo, areaServed (DMV cities), hasOfferCatalog; noscript
fallback links the new pages
- components.jsx: hero copy + footer links point at real service pages
- nginx.conf/Dockerfile: ship generated pages, robots/sitemap types
- llms.txt: service pages + service area
2026-09-18 08:00:19 -04:00
|
|
|
node build-pages.mjs
|
2026-10-01 20:43:16 -04:00
|
|
|
# Cache-bust: Cloudflare caches assets 4h; stamp content hashes into HTML refs.
|
|
|
|
|
for a in components.min.js tweaks-panel.min.js app.min.js styles.css; do
|
|
|
|
|
h=$(md5sum "$a" | cut -c1-8)
|
|
|
|
|
find . -name index.html -not -path './node_modules/*' -exec sed -i -E "s#(\"/$a)(\?v=[0-9a-f]+)?\"#\1?v=$h\"#g" {} +
|
|
|
|
|
done
|