Files

48 lines
1.2 KiB
JavaScript
Raw Permalink 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);
const iconMetaData = await getIconMetaData(path.resolve(scriptDir, '../icons'));
const iconAliasesRedirectRoutes = Object.entries(iconMetaData)
.filter(([, { aliases }]) => aliases?.length)
.map(([iconName, { aliases }]) => {
2024-06-20 16:13:38 +02:00
aliases = aliases.map((alias) => (typeof alias === 'object' ? alias.name : alias));
2024-03-08 15:20:15 +01:00
const aliasRouteMatches = aliases.join('|');
return {
src: `/icons/(${aliasRouteMatches})`,
status: 302,
headers: {
Location: `/icons/${iconName}`,
},
};
});
2023-06-04 16:59:38 +02:00
const vercelRouteConfig = {
version: 3,
overrides: {},
cleanUrls: true,
routes: [
{
handle: 'filesystem',
},
{
src: '(?<url>/api/.*)',
dest: '/__nitro?url=$url',
},
2024-03-08 15:20:15 +01:00
...iconAliasesRedirectRoutes,
2023-06-04 16:59:38 +02:00
],
};
const output = JSON.stringify(vercelRouteConfig, null, 2);
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
2024-03-08 15:20:15 +01:00
fs.writeFileSync(vercelOutputJSON, output, 'utf-8');