From 76d449a974d3f9002d434383aa3d0484acdeda23 Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Fri, 8 Mar 2024 15:20:15 +0100 Subject: [PATCH] Aliases redirect on site (#1959) * test aliases * test * Add redirect routes * Formatting --- scripts/writeIconDetails.mjs | 3 ++- scripts/writeVercelOutput.mjs | 35 +++++++++++++++++++++++------------ 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/scripts/writeIconDetails.mjs b/scripts/writeIconDetails.mjs index 95036bc82..5bc9dbf2b 100644 --- a/scripts/writeIconDetails.mjs +++ b/scripts/writeIconDetails.mjs @@ -28,7 +28,7 @@ import iconNode from '../iconNodes/${iconName}.node.json' import metaData from '../../../../icons/${iconName}.json' import releaseData from '../releaseMetadata/${iconName}.json' -const { tags, categories, contributors } = metaData +const { tags, categories, contributors, aliases } = metaData const iconDetails = { name: '${iconName}', @@ -36,6 +36,7 @@ const iconDetails = { contributors, tags, categories, + aliases, ...releaseData, } diff --git a/scripts/writeVercelOutput.mjs b/scripts/writeVercelOutput.mjs index 1bcaa18ab..5c9d741b6 100644 --- a/scripts/writeVercelOutput.mjs +++ b/scripts/writeVercelOutput.mjs @@ -1,7 +1,27 @@ import path from 'path'; import fs from 'fs'; +// eslint-disable-next-line import/no-named-as-default, import/no-named-as-default-member +import getIconMetaData from '../tools/build-icons/utils/getIconMetaData.mjs'; +import { getCurrentDirPath } from './helpers.mjs'; const currentDir = process.cwd(); +const scriptDir = getCurrentDirPath(import.meta.url); + +const iconMetaData = await getIconMetaData(path.resolve(scriptDir, '../icons')); + +const iconAliasesRedirectRoutes = Object.entries(iconMetaData) + .filter(([, { aliases }]) => aliases?.length) + .map(([iconName, { aliases }]) => { + const aliasRouteMatches = aliases.join('|'); + + return { + src: `/icons/(${aliasRouteMatches})`, + status: 302, + headers: { + Location: `/icons/${iconName}`, + }, + }; + }); const vercelRouteConfig = { version: 3, @@ -15,21 +35,12 @@ const vercelRouteConfig = { src: '(?/api/.*)', dest: '/__nitro?url=$url', }, - // { - // source: '/icon/:path*', - // destination: '/icons/:path*', - // permanent: true, - // }, - // { - // src: '/(.*)', - // status: 404, - // dest: '/static/404.html', - // }, + ...iconAliasesRedirectRoutes, ], }; const output = JSON.stringify(vercelRouteConfig, null, 2); -const vercelOutputJosn = path.resolve(currentDir, '.vercel/output/config.json'); +const vercelOutputJSON = path.resolve(currentDir, '.vercel/output/config.json'); -fs.writeFileSync(vercelOutputJosn, output, 'utf-8'); +fs.writeFileSync(vercelOutputJSON, output, 'utf-8');