diff --git a/icons/fingerprint.json b/icons/fingerprint-pattern.json similarity index 63% rename from icons/fingerprint.json rename to icons/fingerprint-pattern.json index b2526f190..78cbad86a 100644 --- a/icons/fingerprint.json +++ b/icons/fingerprint-pattern.json @@ -16,5 +16,13 @@ "security", "medical", "devices" + ], + "aliases": [ + { + "name": "fingerprint", + "deprecationReason": "alias.name", + "deprecated": true, + "toBeRemovedInVersion": "v1.0" + } ] } diff --git a/icons/fingerprint.svg b/icons/fingerprint-pattern.svg similarity index 100% rename from icons/fingerprint.svg rename to icons/fingerprint-pattern.svg diff --git a/packages/lucide-react/package.json b/packages/lucide-react/package.json index c4941bf34..0b504d3a8 100644 --- a/packages/lucide-react/package.json +++ b/packages/lucide-react/package.json @@ -42,7 +42,7 @@ "build": "pnpm clean && pnpm copy:license && pnpm build:icons && pnpm typecheck && pnpm build:bundles", "copy:license": "cp ../../LICENSE ./LICENSE", "clean": "rm -rf dist && rm -rf stats && rm -rf ./src/icons/*.ts && rm -f dynamic.* && rm -f dynamicIconImports.d.ts", - "build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mts --renderUniqueKey --withAliases --withDynamicImports --separateAliasesFile --aliasesFileExtension=.ts --iconFileExtension=.ts --exportFileName=index.ts", + "build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mts --renderUniqueKey --withAliases --withDynamicImports --separateAliasesFile --separateAliasesFileIgnore=fingerprint --aliasesFileExtension=.ts --iconFileExtension=.ts --exportFileName=index.ts", "build:bundles": "rollup -c ./rollup.config.mjs", "typecheck": "tsc", "typecheck:watch": "tsc -w", diff --git a/packages/lucide-react/scripts/getAliasesEntryNames.mts b/packages/lucide-react/scripts/getAliasesEntryNames.mts index 4fd421a6b..24c48283e 100644 --- a/packages/lucide-react/scripts/getAliasesEntryNames.mts +++ b/packages/lucide-react/scripts/getAliasesEntryNames.mts @@ -3,6 +3,8 @@ import getIconMetaData from '@lucide/build-icons/utils/getIconMetaData'; const ICONS_DIR = path.resolve(process.cwd(), '../../icons'); +const ignoreAliases = ['fingerprint']; + export default async function getAliasesEntryNames() { const metaJsonFiles = await getIconMetaData(ICONS_DIR); @@ -10,5 +12,5 @@ export default async function getAliasesEntryNames() { const aliases = iconWithAliases.flatMap(({ aliases }) => aliases); - return aliases.map((alias) => path.join('src/icons', `${alias.name}.ts`)); + return aliases.filter(alias => !ignoreAliases.includes(alias.name)).map((alias) => path.join('src/icons', `${alias.name}.ts`)); } diff --git a/packages/lucide-solid/package.json b/packages/lucide-solid/package.json index 2b1bd67c7..fc46beda8 100644 --- a/packages/lucide-solid/package.json +++ b/packages/lucide-solid/package.json @@ -61,7 +61,7 @@ "build:transpile": "tsc --jsx preserve -t es2020 --rootDir src --outDir dist --noEmit false", "build:version": "node ./scripts/replaceVersion.mjs", "build:bundle": "rollup -c rollup.config.mjs", - "build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mts --renderUniqueKey --withAliases --separateAliasesFile --aliasesFileExtension=.ts --iconFileExtension=.tsx --exportFileName=index.ts", + "build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mts --renderUniqueKey --withAliases --separateAliasesFile --separateAliasesFileIgnore=fingerprint --aliasesFileExtension=.ts --iconFileExtension=.tsx --exportFileName=index.ts", "test": "pnpm build:icons && vitest run", "version": "pnpm version --git-tag-version=false" }, diff --git a/tools/build-icons/building/aliases/generateAliasesFiles.ts b/tools/build-icons/building/aliases/generateAliasesFiles.ts index ea9572b12..d15c90da0 100644 --- a/tools/build-icons/building/aliases/generateAliasesFiles.ts +++ b/tools/build-icons/building/aliases/generateAliasesFiles.ts @@ -4,7 +4,7 @@ import fs from 'fs'; import { toPascalCase, resetFile, appendFile } from '@lucide/helpers'; import deprecationReasonTemplate from '../../utils/deprecationReasonTemplate.ts'; import getExportString from './getExportString.ts'; -import type { IconMetadata, IconNode } from '../../types.ts'; +import type { IconMetadata } from '../../types.ts'; import { type INode } from 'svgson'; interface GenerateAliasesFilesOptions { @@ -17,6 +17,7 @@ interface GenerateAliasesFilesOptions { aliasNamesOnly?: boolean; separateAliasesFile?: boolean; separateAliasesFileExtension?: string; + separateAliasesFileIgnore?: string; showLog?: boolean; } @@ -30,6 +31,7 @@ export default async function generateAliasesFiles({ aliasNamesOnly = false, separateAliasesFile = false, separateAliasesFileExtension, + separateAliasesFileIgnore, showLog = true, }: GenerateAliasesFilesOptions) { const iconsDistDirectory = path.join(outputDirectory, `icons`); @@ -57,6 +59,7 @@ export default async function generateAliasesFiles({ await Promise.all( icons.map(async (iconName, index) => { const componentName = toPascalCase(iconName); + const iconAliases = iconMetaData[iconName]?.aliases?.map((alias) => { if (typeof alias === 'string') { return { @@ -111,7 +114,14 @@ export default async function generateAliasesFiles({ }) : ''; - if (separateAliasesFile) { + if (separateAliasesFileIgnore?.includes(alias.name)) { + console.log('Skipped alias file for', alias.name); + } + + const createSeparateAliasesFile = + separateAliasesFile && !separateAliasesFileIgnore?.includes(alias.name); + + if (createSeparateAliasesFile) { const output = `export { default } from "./${iconName}${ separateAliasesFileExtension ? iconFileExtension : '' }";\n`; @@ -128,7 +138,7 @@ export default async function generateAliasesFiles({ return; } - const exportFileIcon = separateAliasesFile ? alias.name : iconName; + const exportFileIcon = createSeparateAliasesFile ? alias.name : iconName; if (index > 0) { aliasFileContent += '\n'; diff --git a/tools/build-icons/building/generateDynamicImports.ts b/tools/build-icons/building/generateDynamicImports.ts index 63043e77b..d26d4fa84 100644 --- a/tools/build-icons/building/generateDynamicImports.ts +++ b/tools/build-icons/building/generateDynamicImports.ts @@ -1,9 +1,10 @@ import path from 'path'; import { resetFile, appendFile } from '@lucide/helpers'; -import type { IconMetadata, IconNode } from '../types.ts'; +import type { IconMetadata } from '../types.ts'; +import type { INode } from 'svgson'; interface GenerateDynamicImports { - iconNodes: Record; + iconNodes: Record; outputDirectory: string; fileExtension: string; iconMetaData: Record; diff --git a/tools/build-icons/building/generateExportsFile.ts b/tools/build-icons/building/generateExportsFile.ts index 0ba0d4186..08dc1739d 100644 --- a/tools/build-icons/building/generateExportsFile.ts +++ b/tools/build-icons/building/generateExportsFile.ts @@ -1,13 +1,11 @@ import path from 'path'; - -// eslint-disable-next-line import/no-extraneous-dependencies import { toPascalCase, toCamelCase, resetFile, appendFile } from '@lucide/helpers'; -import type { IconNode } from '../types.ts'; +import type { INode } from 'svgson'; export default async function generateExportFile( inputEntry: string, outputDirectory: string, - iconNodes: IconNode, + iconNodes: Record, exportModuleNameCasing: 'camel' | 'pascal', iconFileExtension = '', ) { diff --git a/tools/build-icons/cli.ts b/tools/build-icons/cli.ts index 7af5016fd..973703e7b 100755 --- a/tools/build-icons/cli.ts +++ b/tools/build-icons/cli.ts @@ -26,6 +26,7 @@ interface CliArguments { withDynamicImports?: boolean; separateAliasesFile?: boolean; separateAliasesFileExtension?: string; + separateAliasesFileIgnore?: string; separateIconFileExport?: boolean; separateIconFileExportExtension?: string; aliasesFileExtension?: string; @@ -56,6 +57,7 @@ const { withDynamicImports = false, separateAliasesFile = false, separateAliasesFileExtension = undefined, + separateAliasesFileIgnore = undefined, separateIconFileExport = false, separateIconFileExportExtension = undefined, aliasesFileExtension = '.js', @@ -98,10 +100,10 @@ async function buildIcons() { iconFileExtension, outputDirectory: OUTPUT_DIR, fileExtension: aliasesFileExtension, - exportModuleNameCasing, aliasImportFileExtension, separateAliasesFile, separateAliasesFileExtension, + separateAliasesFileIgnore, showLog: !silent, }); }