Files
lucide/docs/scripts/writeVercelOutput.mjs
T

46 lines
1.5 KiB
JavaScript
Raw Normal View History

2023-06-04 16:59:38 +02:00
import path from 'path';
import fs from 'fs';
import { getIconMetaData } from '@lucide/build-icons';
import { getCurrentDirPath } from '@lucide/helpers';
2023-06-04 16:59:38 +02:00
const currentDir = process.cwd();
2024-03-08 15:20:15 +01:00
const scriptDir = getCurrentDirPath(import.meta.url);
2025-02-06 15:39:07 +01:00
const iconMetaData = await getIconMetaData(path.resolve(scriptDir, '../../icons'));
2024-03-08 15:20:15 +01:00
const iconAliasesRedirectRoutes = Object.entries(iconMetaData)
.filter(([, { aliases }]) => aliases?.length)
.map(([iconName, { aliases }]) => {
2025-07-30 16:52:50 +02:00
const aliasRouteMatches = aliases.map((alias) => alias.name).join('|');
2024-03-08 15:20:15 +01:00
return {
2025-02-06 15:39:07 +01:00
src: `/icons/${aliasRouteMatches}`,
2024-03-08 15:20:15 +01:00
status: 302,
headers: {
Location: `/icons/${iconName}`,
},
};
});
2023-06-04 16:59:38 +02:00
2024-03-08 15:20:15 +01:00
const vercelOutputJSON = path.resolve(currentDir, '.vercel/output/config.json');
2023-06-04 16:59:38 +02:00
2026-02-26 14:59:48 +01:00
const vercelConfig = await fs.promises.readFile(vercelOutputJSON, 'utf-8');
2026-02-26 14:54:30 +01:00
const vercelRouteConfig = JSON.parse(vercelConfig);
2026-02-26 17:34:02 +01:00
vercelRouteConfig.routes = [...iconAliasesRedirectRoutes, ...vercelRouteConfig.routes];
2026-02-26 14:54:30 +01:00
2026-02-26 15:31:29 +01:00
// Adjust the existing catch-all route to only catch API routes, so that we can add a new catch-all route for 404s
const allCatchRoute = '/(.*)';
2026-02-26 17:34:02 +01:00
const fallBackIndex = vercelRouteConfig.routes.findIndex((route) => route.src === allCatchRoute);
2026-02-26 15:31:29 +01:00
2026-02-26 17:34:02 +01:00
vercelRouteConfig.routes[fallBackIndex].src = '/api/(.*)';
2026-02-26 15:31:29 +01:00
vercelRouteConfig.routes.push({
src: allCatchRoute,
dest: '/404.html',
2026-02-26 17:34:02 +01:00
});
2026-02-26 15:31:29 +01:00
2026-02-26 14:54:30 +01:00
const output = JSON.stringify(vercelRouteConfig, null, 2);
2025-02-10 14:13:52 +01:00
await fs.promises.writeFile(vercelOutputJSON, output, 'utf-8');