Files
lucide/packages/lucide-static/scripts/buildLib.mts
Copilot 75b55160aa chore(dev): upgrade ESLint to latest compatible stack (v10) (#4378)
* chore: upgrade eslint to v9 latest with compatible lint deps

Agent-Logs-Url: https://github.com/lucide-icons/lucide/sessions/f7c1f1b5-d213-4afa-91a8-b799a16397ec

* Fix eslint config

* Fix a lot of eslint errors

* Fix eslint

* Fix eslint errors

* Fix eslint errors

* Fix types

* Fix eslint warning

* Format code

* Add eslint 10

* Remove unused vars

* Update pnpm

* Update deps

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2026-08-18 13:09:22 +02:00

54 lines
1.8 KiB
TypeScript

import fs from 'fs';
import path from 'path';
import { readSvgDirectory, getCurrentDirPath } from '@lucide/helpers';
import readSvgs from './readSvgs.mts';
import generateSprite from './generateSprite.mts';
import generateIconNodes from './generateIconNodes.mts';
import copyIcons from './copyIcons.mts';
import pkg from '../package.json' with { type: 'json' };
const createDirectory = (dir: string) => {
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir);
}
};
const currentDir = getCurrentDirPath(import.meta.url);
const PACKAGE_DIR = path.resolve(currentDir, '../');
const ICONS_DIR = path.join(PACKAGE_DIR, '../../icons');
const LIB_DIR = path.join(PACKAGE_DIR, 'lib');
const ICON_MODULE_DIR = path.join(LIB_DIR, 'icons');
const license = `@license ${pkg.name} v${pkg.version} - ${pkg.license}`;
createDirectory(LIB_DIR);
createDirectory(ICON_MODULE_DIR);
const svgFiles = await readSvgDirectory(ICONS_DIR);
const svgs = await readSvgs(svgFiles, ICONS_DIR);
const aliases = (await Promise.all(
(await readSvgDirectory(ICONS_DIR, '.json')).map(async (metadataFile) => {
const filePath = path.join(ICONS_DIR, metadataFile);
const fileContent = await fs.promises.readFile(filePath, 'utf-8');
const { aliases }: {aliases: undefined | (string | { name: string })[]} = JSON.parse(fileContent);
if (!aliases?.length) return [];
const svgName = path.basename(metadataFile, '.json');
const svg = svgs.find((s) => s.name === svgName);
if (!svg) return [];
return aliases.map(alias => ({
...svg,
name: typeof alias === 'string' ? alias : alias.name,
}));
})
)).flat();
await Promise.all([
generateSprite(svgs, PACKAGE_DIR, license),
generateIconNodes(svgs, PACKAGE_DIR),
copyIcons([...svgs, ...aliases], PACKAGE_DIR, license),
]);