* Change all internal links to use URLs ending in `/` * Add the prerender script which uses PhantomJS to pre-render the HTML for all possible pages in the system * Change the build process to incorporate the pre-rendered files * Update the sitemap script to generate the new URLs
41 lines
1.1 KiB
Bash
Executable File
41 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
OUTPUT_DIR='./prerender'
|
|
SCRIPT='/tmp/phantomjs_render.coffee'
|
|
SITEMAP_FILE='./src/pages/sitemap.txt'
|
|
|
|
cat > $SCRIPT <<END
|
|
url = require('system').args[1]
|
|
page = require('webpage').create()
|
|
path = "#{url}".replace(/http:\/\/[^/]*/, '').replace(/^\//, '').replace(/\/$/, '')
|
|
localUrl = "http://localhost:8000/#{path}"
|
|
|
|
page.open localUrl, (status)->
|
|
if status isnt 'success'
|
|
console.error "Could not load #{url}"
|
|
phantom.exit(1)
|
|
|
|
setTimeout (->
|
|
console.log page.content
|
|
phantom.exit(0)
|
|
), 5000
|
|
END
|
|
|
|
./scripts/sitemap > $SITEMAP_FILE
|
|
|
|
cat $SITEMAP_FILE | while read URL; do
|
|
OUTPUT_FILE=$(sed 's/http:\/\/[^/]*\///' <<< $URL)
|
|
OUTPUT_FILE="$OUTPUT_DIR/$OUTPUT_FILE/index.html"
|
|
OUTPUT_FILE=$(sed 's/\/\//\//' <<< $OUTPUT_FILE)
|
|
|
|
if [[ ! -e "$OUTPUT_FILE" ]]; then
|
|
mkdir -p $(dirname "$OUTPUT_FILE")
|
|
echo "prerendering $URL into $OUTPUT_FILE"
|
|
phantomjs --web-security=false --load-images=false $SCRIPT "$URL" >"$OUTPUT_FILE" 2>/dev/null
|
|
else
|
|
echo "Skipping $URL..."
|
|
fi
|
|
done
|
|
|
|
rm $SCRIPT
|