mirror of
https://github.com/lucide-icons/lucide.git
synced 2025-12-16 06:37:42 +01:00
* Adjust typescript types * adjust types * fix types in all helper files * Fix types * Migrate js files to ts files * Refactor to TS files * Rename extentions * Adjust imports * Fix builds * Update lockfile * Fix last typescript migration * Fix entry path @lucide/outline-svg * Fix types * add checkout step * format files * Format files
58 lines
1.5 KiB
TypeScript
58 lines
1.5 KiB
TypeScript
import path from 'path';
|
|
import { resetFile, appendFile } from '@lucide/helpers';
|
|
import type { IconMetadata, IconNode } from '../types.ts';
|
|
|
|
interface GenerateDynamicImports {
|
|
iconNodes: Record<string, IconNode>;
|
|
outputDirectory: string;
|
|
fileExtension: string;
|
|
iconMetaData: Record<string, IconMetadata>;
|
|
showLog?: boolean;
|
|
}
|
|
|
|
export default async function generateDynamicImports({
|
|
iconNodes,
|
|
outputDirectory,
|
|
fileExtension,
|
|
iconMetaData,
|
|
showLog = true,
|
|
}: GenerateDynamicImports) {
|
|
const fileName = path.basename(`dynamicIconImports${fileExtension}`);
|
|
const icons = Object.keys(iconNodes);
|
|
|
|
// Reset file
|
|
await resetFile(fileName, outputDirectory);
|
|
|
|
let importString = `const dynamicIconImports = {\n`;
|
|
|
|
// Generate Import for Icon VNodes
|
|
icons.forEach((iconName) => {
|
|
importString += ` '${iconName}': () => import('./icons/${iconName}'),\n`;
|
|
|
|
const iconAliases = iconMetaData[iconName]?.aliases?.map((alias) => {
|
|
if (typeof alias === 'string') {
|
|
return alias;
|
|
}
|
|
return alias.name;
|
|
});
|
|
|
|
if (iconAliases != null && Array.isArray(iconAliases)) {
|
|
iconAliases.forEach((alias) => {
|
|
if (!alias) {
|
|
return;
|
|
}
|
|
|
|
importString += ` '${alias}': () => import('./icons/${iconName}'),\n`;
|
|
});
|
|
}
|
|
});
|
|
|
|
importString += '};\nexport default dynamicIconImports;\n';
|
|
|
|
await appendFile(importString, fileName, outputDirectory);
|
|
|
|
if (showLog) {
|
|
console.log(`Successfully generated ${fileName} file`);
|
|
}
|
|
}
|