From ad9a5c7403d48b570dbc2cc90ccd3ea68c313f3c Mon Sep 17 00:00:00 2001 From: Yangshun Tay Date: Sat, 7 Oct 2017 23:57:11 +0800 Subject: [PATCH] Add check for unique redirect URLs --- gatsby-node.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/gatsby-node.js b/gatsby-node.js index ed11bc9e..7f0254d1 100644 --- a/gatsby-node.js +++ b/gatsby-node.js @@ -28,6 +28,9 @@ exports.modifyWebpackConfig = ({config, stage}) => { exports.createPages = async ({graphql, boundActionCreators}) => { const {createPage, createRedirect} = boundActionCreators; + // Used to detect and prevent duplicate redirects + const redirectToSlugMap = {}; + const blogTemplate = resolve('./src/templates/blog.js'); const communityTemplate = resolve('./src/templates/community.js'); const docsTemplate = resolve('./src/templates/docs.js'); @@ -114,13 +117,22 @@ exports.createPages = async ({graphql, boundActionCreators}) => { redirect = [redirect]; } - redirect.forEach(fromPath => + redirect.forEach(fromPath => { + if (redirectToSlugMap[fromPath] != null) { + console.error(`Duplicate redirect detected from "${fromPath}" to:\n` + + `* ${redirectToSlugMap[fromPath]}\n` + + `* ${slug}\n` + ); + process.exit(1); + } + + redirectToSlugMap[fromPath] = slug; createRedirect({ fromPath: `/${fromPath}`, redirectInBrowser: true, toPath: `/${slug}`, - }), - ); + }); + }); } } });