Files
lucide/tools/build-icons/building/generateExportsFile.ts
Karsa 0abfa2f0d5 Merge branch 'refs/heads/main' into package/angularv17
# Conflicts:
#	packages/lucide-angular/package.json
#	packages/lucide-angular/scripts/exportTemplate.mts
#	pnpm-lock.yaml
#	tools/build-icons/building/generateExportsFile.ts
#	tools/build-icons/building/generateIconFiles.ts
2025-12-15 10:05:13 +01:00

38 lines
1.1 KiB
TypeScript

import path from 'path';
import { toPascalCase, toCamelCase, resetFile, appendFile } from '@lucide/helpers';
import type { INode } from 'svgson';
export default async function generateExportFile(
inputEntry: string,
outputDirectory: string,
iconNodes: Record<string, INode>,
exportModuleNameCasing: 'camel' | 'pascal',
iconFileExtension = '',
) {
const fileName = path.basename(inputEntry);
// Reset file
await resetFile(fileName, outputDirectory);
const icons = Object.keys(iconNodes);
// Generate Import for Icon VNodes
const iconImportNodesPromises = icons.map(async (iconName) => {
let componentName;
if (exportModuleNameCasing === 'camel') {
componentName = toCamelCase(iconName);
} else if (exportModuleNameCasing === 'pascal') {
componentName = toPascalCase(iconName);
}
const importString = `export * from './${iconName}${iconFileExtension}';\n`;
return appendFile(importString, fileName, outputDirectory);
});
await Promise.all(iconImportNodesPromises);
await appendFile('\n', fileName, outputDirectory);
console.log(`Successfully generated ${fileName} file`);
}