Skip to main content

figma-make-local-runner

Run and build Figma Make exported code locally with automatic dependency resolution and asset handling

Zur Installation springen

Quellinformationen

Repository
reason-machines/design-skills
Letzte Quellaktivität
18. Mai 2026 um 09:09
Erkannte Sprache von SKILL.md
Englisch
Sterne
4
Forks
0

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
figma-make-local-runner
description
Run and build Figma Make exported code locally with automatic dependency resolution and asset handling
triggers
["how do I run Figma Make code locally","setup local environment for Figma exported code","build single HTML file from Figma Make project","resolve Figma Make import errors","handle figma:asset imports locally","remove version specifiers from Figma imports","convert Figma Make to standalone HTML","troubleshoot Figma Make dependencies"]
# Figma Make Local Runner > Skill by [ara.so](https://ara.so) — Design Skills collection. ## Overview Figma Make Local Runner is a TypeScript/React development environment that runs code exported from Figma Make locally. It solves common issues with Figma Make exports including: - **Automatic version specifier removal** from imports (e.g., `@radix-ui/react-slot@1.1.2` → `@radix-ui/react-slot`) - **Custom asset resolution** for `figma:asset/` imports - **Pre-installed dependencies** commonly used by Figma Make - **Single HTML build** capability for standalone distribution ## Installation ```bash # Clone the repository git clone https://github.com/likang/figma-make-local-runner cd figma-make-local-runner # Install dependencies npm install ``` ## Project Setup ### 1. Import Figma Make Code After exporting code from Figma Make: ```bash # Extract downloaded zip and copy src folder cp -r /path/to/figma-make-export/src ./src ``` The `src` folder structure should contain: - `App.tsx` or main component files - `assets/` - images, fonts, SVGs - Component files generated by Figma Make ### 2. Start Development Server ```bash npm run dev ``` Access at `http://localhost:5173` ### 3. Build for Production **Standard Build:** ```bash npm run build ``` **Single HTML File (standalone):** ```bash npm run build:single ``` This creates a single HTML file in `dist/` with all assets inlined - perfect for sharing or embedding. ## Key Commands ```bash # Development server with hot reload npm run dev # Type checking npm run type-check # Production build (standard) npm run build # Production build (single HTML file) npm run build:single # Preview production build npm run preview ``` ## Common Patterns ### Handling Missing Dependencies If you encounter import errors, install the missing package: ```typescript // Error: Cannot find module 'some-package' import { Component } from 'some-package@1.2.3'; // Solution: // npm install some-package ``` The build system automatically strips version specifiers, so install the latest compatible version. ### Working with Figma Assets Figma Make exports may reference assets like: ```typescript import logo from "figma:asset/logo.svg"; import heroImage from "figma:asset/images/hero.png"; function Header() { return ( <div> <img src={logo} alt="Logo" /> <img src={heroImage} alt="Hero" /> </div> ); } ``` The custom Vite plugin resolves these to `src/assets/`: ``` src/ assets/ logo.svg images/ hero.png ``` ### Modifying Generated Components Typical Figma Make component: ```typescript import React from "react"; import { Button } from "./components/ui/button"; export function App() { return ( <div className="w-full h-screen"> <Button>Click me</Button> </div> ); } ``` Add custom logic: ```typescript import React, { useState } from "react"; import { Button } from "./components/ui/button"; export function App() { const [count, setCount] = useState(0); return ( <div className="w-full h-screen"> <Button onClick={() => setCount(count + 1)}> Clicked {count} times </Button> </div> ); } ``` ### Styling with Tailwind Figma Make typically exports with Tailwind CSS classes: ```typescript function Card({ title, description }: { title: string; description: string }) { return ( <div className="rounded-lg border bg-card text-card-foreground shadow-sm"> <div className="flex flex-col space-y-1.5 p-6"> <h3 className="text-2xl font-semibold">{title}</h3> <p className="text-sm text-muted-foreground">{description}</p> </div> </div> ); } ``` Extend with custom Tailwind classes or CSS modules as needed. ## Configuration ### Vite Configuration The project includes custom plugins in `vite.config.ts`: ```typescript import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; export default defineConfig({ plugins: [ react(), // Custom plugin removes version specifiers removeVersionSpecifiersPlugin(), // Custom plugin resolves figma:asset/ imports figmaAssetPlugin() ], resolve: { alias: { '@': '/src' } } }); ``` ### TypeScript Configuration Standard React TypeScript setup in `tsconfig.json`: ```json { "compilerOptions": { "target": "ES2020", "useDefineForClassFields": true, "lib": ["ES2020", "DOM", "DOM.Iterable"], "module": "ESNext", "skipLibCheck": true, "moduleResolution": "bundler", "resolveJsonModule": true, "isolatedModules": true, "noEmit": true, "jsx": "react-jsx", "strict": true, "paths": { "@/*": ["./src/*"] } }, "include": ["src"] } ``` ## Troubleshooting ### Import Version Conflicts **Problem:** Imports with version specifiers fail ```typescript import { Slot } from "@radix-ui/react-slot@1.1.2"; // Error: Cannot find module ``` **Solution:** The plugin handles this automatically, but ensure the package is installed: ```bash npm install @radix-ui/react-slot ``` ### Missing Asset Files **Problem:** `figma:asset/` imports fail at runtime ```typescript import icon from "figma:asset/icon.svg"; // Error: Module not found ``` **Solution:** Verify file exists in `src/assets/`: ```bash ls src/assets/icon.svg ``` ### Build Errors with External Dependencies **Problem:** Dependency not pre-installed **Solution:** Install explicitly: ```bash npm install <package-name> ``` Common Figma Make dependencies: ```bash npm install @radix-ui/react-slot npm install class-variance-authority npm install clsx npm install tailwind-merge npm install lucide-react ``` ### Single HTML Build Asset Issues **Problem:** Assets not loading in single HTML file **Solution:** Ensure `build:single` command is used and assets are in `src/assets/`: ```bash npm run build:single ``` ### Hot Reload Not Working **Problem:** Changes don't reflect in browser **Solution:** Restart dev server with cleared cache: ```bash # Stop server (Ctrl+C) rm -rf node_modules/.vite npm run dev ``` ## Real-World Example Complete workflow for a Figma Make dashboard: ```typescript // src/App.tsx (generated by Figma Make, then modified) import React, { useState } from "react"; import { Button } from "./components/ui/button"; import { Card } from "./components/ui/card"; import logo from "figma:asset/logo.svg"; interface DashboardData { users: number; revenue: number; } export function App() { const [data, setData] = useState<DashboardData>({ users: 1234, revenue: 56789 }); const refreshData = async () => { // Add your API call here const response = await fetch(process.env.VITE_API_URL + '/dashboard'); const newData = await response.json(); setData(newData); }; return ( <div className="min-h-screen bg-background p-8"> <header className="mb-8 flex items-center justify-between"> <img src={logo} alt="Logo" className="h-12" /> <Button onClick={refreshData}>Refresh</Button> </header> <div className="grid grid-cols-2 gap-4"> <Card title="Total Users" description={data.users.toString()} /> <Card title="Revenue" description={`$${data.revenue}`} /> </div> </div> ); } ``` Environment variables (`.env`): ```bash VITE_API_URL=https://api.example.com ``` Build and share: ```bash npm run build:single # Share dist/index.html as standalone file ```
Auf GitHub ansehen