mirror of
https://github.com/lucide-icons/lucide.git
synced 2026-08-29 10:18:24 +02:00
50 lines
1.3 KiB
TypeScript
50 lines
1.3 KiB
TypeScript
|
|
import fs from 'fs';
|
||
|
|
import path from 'path';
|
||
|
|
import { readSvgDirectory, toCamelCase } from '@lucide/helpers';
|
||
|
|
|
||
|
|
const currentDir = process.cwd();
|
||
|
|
const ICONS_DIR = path.resolve(currentDir, '../lab');
|
||
|
|
const iconJsonFiles = await readSvgDirectory(ICONS_DIR, '.json');
|
||
|
|
|
||
|
|
const labDirectory = path.resolve(currentDir, '.vitepress/data/lab');
|
||
|
|
const location = path.resolve(currentDir, labDirectory, 'iconMetaData.ts');
|
||
|
|
|
||
|
|
if (fs.existsSync(location)) {
|
||
|
|
fs.unlinkSync(location);
|
||
|
|
}
|
||
|
|
|
||
|
|
if (!fs.existsSync(labDirectory)) {
|
||
|
|
fs.mkdirSync(labDirectory);
|
||
|
|
}
|
||
|
|
|
||
|
|
const iconMetaIndexFileImports = [];
|
||
|
|
const iconMetaIndexFileExports = [];
|
||
|
|
|
||
|
|
iconJsonFiles.forEach((iconJsonFile) => {
|
||
|
|
const iconName = path.basename(iconJsonFile, '.json');
|
||
|
|
|
||
|
|
iconMetaIndexFileImports.push(
|
||
|
|
`import ${toCamelCase(iconName)}Metadata from '../../../../lab/${iconName}.json';`,
|
||
|
|
);
|
||
|
|
iconMetaIndexFileExports.push(` '${iconName}': ${toCamelCase(iconName)}Metadata,`);
|
||
|
|
});
|
||
|
|
|
||
|
|
try {
|
||
|
|
await fs.promises.writeFile(
|
||
|
|
location,
|
||
|
|
`\
|
||
|
|
${iconMetaIndexFileImports.join('\n')}
|
||
|
|
|
||
|
|
|
||
|
|
export default {
|
||
|
|
${iconMetaIndexFileExports.join('\n')}
|
||
|
|
}
|
||
|
|
`,
|
||
|
|
'utf-8',
|
||
|
|
);
|
||
|
|
|
||
|
|
console.log('Successfully write icon json file index');
|
||
|
|
} catch (error) {
|
||
|
|
throw new Error(`Something went wrong generating icon json file index file,\n ${error}`);
|
||
|
|
}
|