From 02eb9161b57917ccaa262f1bf070507cddde3b08 Mon Sep 17 00:00:00 2001 From: Ronit Gupta Date: Mon, 19 Oct 2026 20:19:35 +0530 Subject: [PATCH] feat(svelte): export __iconData and __iconNode across per-icon modules (#4936) (#4957) * feat(svelte): export __iconData and __iconNode across per-icon modules (#4936) * Refactor imports in lucide-svelte.spec.ts Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * fix(build-icons): scope per-icon data re-exports behind exportIconData flag - Problem: generateAliasesFiles unconditionally re-exported __iconData and __iconNode for all packages using separateAliasesFile. Packages like @lucide/solid and @lucide/icons do not export these names from their templates, causing missing export errors in downstream bundlers (e.g. solid vite integration). - Solution: Add exportIconData flag (default false) to CLI, generateIconFiles, and generateAliasesFiles so named re-exports are opt-in and only emitted for packages that define them (@lucide/svelte). * refactor(svelte): remove tools/build-icons changes per maintainer review --------- Co-authored-by: Eric Fennis Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- packages/svelte/scripts/exportTemplate.mts | 17 +++++++++++++---- packages/svelte/tests/lucide-svelte.spec.ts | 12 ++++++++++++ 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/packages/svelte/scripts/exportTemplate.mts b/packages/svelte/scripts/exportTemplate.mts index ef046a584..14a08a6f5 100644 --- a/packages/svelte/scripts/exportTemplate.mts +++ b/packages/svelte/scripts/exportTemplate.mts @@ -9,14 +9,23 @@ export default defineExportTemplate( return `\ ${getHTMLBanner()} + + - + `; }, ); diff --git a/packages/svelte/tests/lucide-svelte.spec.ts b/packages/svelte/tests/lucide-svelte.spec.ts index 4713a05bf..f0a269283 100644 --- a/packages/svelte/tests/lucide-svelte.spec.ts +++ b/packages/svelte/tests/lucide-svelte.spec.ts @@ -1,6 +1,7 @@ import { describe, it, expect, afterEach } from 'vitest'; import { render, cleanup } from '@testing-library/svelte'; import { Smile, Pen, Edit2 } from '../src/lucide-svelte.js'; +import { __iconData, __iconNode } from '../src/icons/face-slightly-smiling.svelte'; import TestSlots from './TestSlots.svelte'; import ContextWrapper from './ContextWrapper.svelte'; @@ -132,3 +133,14 @@ describe('Icon Component Accessibility', () => { expect(container.firstChild).not.toHaveAttribute('aria-hidden'); }); }); + +describe('Per-icon data export', () => { + it('should export __iconData and __iconNode from the svelte component module', () => { + expect(__iconData).toBeDefined(); + expect(__iconData.name).toBe('face-slightly-smiling'); + expect(__iconData.size).toBe(24); + expect(Array.isArray(__iconData.node)).toBe(true); + expect(__iconData.node.length).toBeGreaterThan(0); + expect(__iconNode).toEqual(__iconData.node); + }); +});