* test(lucide-solid): add Vite and SolidStart integration fixtures Mirror the `lucide-react` integration suite for `lucide-solid`. Both fixtures are scaffolded by `pnpm create solid` and consume the built package through its public entry points only: - `integrations/lucide-solid/vite` (vanilla/basic template) - `integrations/lucide-solid/solid-start` (solid-start-v2/basic template) Each runs a production build, `tsc --noEmit`, and a Vitest Browser Mode test in Chromium under a `check` script, wired into the new root `test:integrations:solid` script and an `integration` job on the `lucide-solid` workflow. The showcase exercises the bare export, per-icon props, `LucideProvider`, an alias against its canonical icon, and the `lucide-solid/icons/circle` deep import. `lucide-solid` has no `DynamicIcon`, so the deep import takes the place of the React fixtures' dynamic-icon block. The SolidStart spec additionally navigates between two routes. Both fixtures resolve the package through its `solid` export condition and compile the raw JSX in `dist/source`; the SolidStart build bundles it into the SSR server chunk. Each fixture carries a second TypeScript project, `tsconfig.declarations.json`, that compiles the showcase with `skipLibCheck: false` so the declarations shipped in `dist/types` are actually read. That catches a `.d.ts` pointing at a file the build never emitted, which the app typecheck silently degrades to `any`. `@solidjs/start@2` requires Vite 8 while the repository pins Vite 7, so the SolidStart fixture is released from that pin by a parent-scoped `'@lucide/integration-solid-solid-start>vite'` override. Only that importer resolves to Vite 8; every other package stays on 7.3.6. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EAmVJZqdypLNwEFhCmfsPN * fix(solid): align SolidStart fixture with Vite 7 * Upgrade vite dependency from 7.3.6 to 8.3.2 Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Update README.md to clarify Vite overrides Removed duplicate note about bug #4846 and added a section on Vite overrides. --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
1.5 KiB
Lucide Solid integrations
These fixtures exercise the built lucide-solid package in real consumer frameworks.
Every fixture runs three checks:
- a framework production build;
- TypeScript with
noEmit; - Vitest Browser Mode in Chromium.
From the repository root, install Chromium once and run the complete suite:
pnpm --filter @lucide/integration-solid-vite exec playwright install chromium
pnpm test:integrations:solid
The fixtures depend on lucide-solid through workspace:*, but import only its public package entry points. The root command builds lucide-solid before running any consumer checks.
Two TypeScript projects per fixture
tsconfig.json typechecks the fixture's own sources with skipLibCheck: true, like the React fixtures do, because the third-party declarations a Vite app pulls in are not clean under TypeScript 6.
tsconfig.declarations.json compiles only src/IconShowcase.tsx — the file that imports the public entry points — with skipLibCheck: false and no ambient types. That makes tsc read the declarations shipped in dist/types instead of skipping them, so a .d.ts that points at a file the build never emitted fails the check. Both run under pnpm typecheck.
Note that this does not reproduce the bug fixed in #4846, where the published declarations imported @lucide/shared/types: inside the workspace that specifier still resolves through packages/lucide-solid/node_modules. Catching that needs a check against the published tarball rather than the workspace link.