[build] command = "yarn build" publish = "public" functions = ".netlify/functions" [build.environment] NODE_VERSION = "14" YARN_VERSION = "1.22.4" YARN_FLAGS = "--no-ignore-optional --frozen-lockfile" GO_VERSION = "1.14.6" # Ensure *only* Pretty URLs are enabled, even though this is already set up in # the Netlify dashboard. [build.processing] skip_processing = false [build.processing.css] bundle = false minify = false [build.processing.js] bundle = false minify = false [build.processing.html] pretty_urls = true [build.processing.images] compress = false [context.deploy-preview] command = "yarn build:functions && yarn build:hugo --environment development --baseURL $DEPLOY_PRIME_URL --buildDrafts --buildFuture" [context.branch-deploy] command = "yarn build:functions && yarn build:hugo --environment development --baseURL $DEPLOY_PRIME_URL --buildDrafts --buildFuture" # https://github.com/netlify/cli/blob/master/docs/netlify-dev.md#netlifytoml-dev-block [dev] framework = "#custom" # only start Hugo, `netlify dev` builds/serves functions itself command = "yarn start:hugo --port 1338 --baseURL=/ --appendPort=false --disableLiveReload" # swap ports to keep consistent w/ normal local server targetPort = 1338 port = 1337 # don't launch browser automatically autoLaunch = false # Cache resoures between builds: # https://github.com/jakejarvis/netlify-plugin-cache [[plugins]] package = "netlify-plugin-cache" [plugins.inputs] paths = ["resources", "public", "_vendor"] # [[plugins]] # package = "netlify-plugin-debug-cache" # The most important headers and redirects are specified in the _headers and # _redirects files generated by Hugo. These are additional custom rules. # PGP key: open in browser, download correctly [[headers]] for = "/jarvis.asc" [headers.values] Cache-Control = "no-cache" Content-Type = "text/plain; charset=UTF-8" Content-Disposition = "inline; filename=\"jarvis.asc\"" # AMP cache invalidation key requirements: # https://developers.google.com/amp/cache/update-cache#update-cache-guidelines [[headers]] for = "/.well-known/amphtml/apikey.pub" [headers.values] Content-Type = "text/plain; charset=UTF-8" # Redirect Netlify and www subdomains to primary domain: [[redirects]] from = "https://jakejarvis.netlify.com/*" to = "https://jarv.is/:splat" status = 301 force = true [[redirects]] from = "https://jakejarvis.netlify.app/*" to = "https://jarv.is/:splat" status = 301 force = true [[redirects]] from = "https://www.jarv.is/*" to = "https://jarv.is/:splat" status = 301 force = true # Support ancient RSS subscriptions and links from WordPress era: [[redirects]] from = "/feed" to = "/feed.xml" status = 301 [[redirects]] from = "/rss" to = "/feed.xml" status = 301 [[redirects]] from = "/index.xml" to = "/feed.xml" status = 301 [[redirects]] from = "/index.php" to = "/" status = 301 [[redirects]] from = "/blog/*" to = "/notes/" status = 301 [[redirects]] from = "/archives/*" to = "/notes/" status = 301 [[redirects]] # Not sure if these XML-RPC requests are malicious but forward them to # webmention.io anyway. from = "/xmlrpc.php" to = "https://webmention.io/jarv.is/xmlrpc" status = 302 # Proxy data to Simple Analytics endpoints: [[redirects]] from = "/api/views/send*" to = "https://queue.simpleanalyticscdn.com/simple.gif:splat" status = 200 force = true [[redirects]] from = "/api/views/append*" to = "https://queue.simpleanalyticscdn.com/append:splat" status = 200 force = true [[redirects]] # This noscript pixel needs to pass unknown arguments along for AMP pages: # https://amp.dev/documentation/components/amp-pixel/ from = "/api/views/noscript.gif*" to = "https://queue.simpleanalyticscdn.com/noscript.gif:splat" status = 200 force = true # Prettier URLs for Netlify Functions (must come after /api/views rules above) [[redirects]] from = "/api/*" to = "/.netlify/functions/:splat" status = 200 # More miscellaneous mirrors/redirects: [[redirects]] from = "/resume" to = "/resume.pdf" status = 302 [[redirects]] from = "/favicon.ico" to = "/img/favicon.ico" status = 200 [[redirects]] from = "/favicon-*" to = "/img/favicon-:splat" status = 301 [[redirects]] from = "/apple-touch-icon.png" to = "/img/apple-touch-icon.png" status = 200 [[redirects]] from = "/apple-touch-icon-precomposed.png" to = "/img/apple-touch-icon.png" status = 200 [[redirects]] from = "/safari-pinned-tab.svg" to = "/img/safari-pinned-tab.svg" status = 200 [[redirects]] from = "/keybase.txt" to = "/.well-known/keybase.txt" status = 301 # Moved these random sites/projects elsewhere (mostly GitHub Pages) to keep # this repo and domain squeaky clean: [[redirects]] from = "/y2k/*" to = "https://jakejarvis.github.io/my-first-website/:splat" status = 302 [[redirects]] from = "/ios-trackers/*" to = "https://jakejarvis.github.io/ios-trackers/:splat" status = 302 [[redirects]] from = "/awesome/*" to = "https://synonymsforawesome.com/" status = 302 [[redirects]] from = "/hugo-node/*" to = "https://github.com/jakejarvis/hugo-extended" status = 302 [[redirects]] from = "/comp20/*" to = "https://jakejarvis.github.io/comp20/" status = 302 [[redirects]] from = "/scrabble/*" to = "https://jakejarvis.github.io/scrabble/" status = 302 # H A C K E R M A N ( ͡° ͜ʖ ͡°) [[redirects]] from = "*/wp-admin/*" to = "/403.html" status = 403 [[redirects]] from = "*/admin/*" to = "/403.html" status = 403 [[redirects]] from = "*/wp-login.php" to = "/403.html" status = 403 [[redirects]] from = "*/login.php" to = "/403.html" status = 403 [[redirects]] from = "*/wlwmanifest.xml" to = "/403.html" status = 403