2023-06-04 16:59:38 +02:00
|
|
|
import path from 'path';
|
|
|
|
|
import fs from 'fs';
|
2024-06-28 11:24:37 +02:00
|
|
|
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 }]) => {
|
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 {
|
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
|
|
|
|
|
|
|
|
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
|
|
|
|
2025-02-10 14:13:52 +01:00
|
|
|
await fs.promises.writeFile(vercelOutputJSON, output, 'utf-8');
|