diff --git a/node-scripts/generate-challenges-redirects.js b/node-scripts/generate-challenges-redirects.js new file mode 100644 index 000000000..889e2d14d --- /dev/null +++ b/node-scripts/generate-challenges-redirects.js @@ -0,0 +1,15 @@ +const { appendFileSync } = require('node:fs'); +const { slugs } = require('../content-testing/content'); + +let challengesRedirects = '\n'; +slugs.challenges.forEach((slug) => { + const videoNumber = slug.split('-')[0]; + challengesRedirects += `/${videoNumber} /challenges/${slug} 302!\n`; +}); + +const redirectsFilePath = './static/_redirects'; +appendFileSync(redirectsFilePath, challengesRedirects); + +console.log( + `${slugs.challenges.size} challenges redirects were appended to '${redirectsFilePath}'` +); diff --git a/package.json b/package.json index fa9ad0d55..54ec4f8fb 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "scripts": { "dev": "gatsby develop -H 0.0.0.0", "build": "gatsby build --verbose", - "build-ci": "npm run tags-transforms && npm run build", + "build-ci": "node node-scripts/generate-challenges-redirects && npm run tags-transforms && npm run build", "serve": "gatsby serve", "clean": "gatsby clean", "test": "jest", diff --git a/static/_redirects b/static/_redirects index 3a726b796..a902a5d8b 100644 --- a/static/_redirects +++ b/static/_redirects @@ -27,7 +27,6 @@ # shortcuts - 302 - /flock-view https://editor.p5js.org/codingtrain/sketches/fFNCIQw4e 302! /decade https://donorbox.org/to-the-power-of-10 302! /noc https://nostarch.com/nature-code 302! @@ -62,7 +61,7 @@ /p5js /tracks/code-programming-with-p5-js 302! /processing /tracks/learning-processing 302! /genuary1 https://editor.p5js.org/codingtrain/sketches/vN8EEr59I 302! -/particles https://thecodingtrain.com/challenges/78-simple-particle-system 302! -/ca https://thecodingtrain.com/challenges/179-wolfram-ca 302! -/182 https://thecodingtrain.com/challenges/182-apollonian-gasket 302! -/180 https://thecodingtrain.com/challenges/180-falling-sand 302! +/particles /challenges/78-simple-particle-system 302! +/ca /challenges/179-wolfram-ca 302! + +# challenges shortcuts will be appended to this file at build time as /{videoNumber} -> /challenges/{slug}