Search

Design Tokens μ–‘λ°©ν–₯ 싱크

04. Design Tokens 기반 μ–‘λ°©ν–₯ 싱크 μ „λž΅

μ „λž΅ κ°œμš”

λ””μžμΈ 토큰(Design Tokens)을 단일 μ§„μ‹€ 곡급원(SoT) 으둜 두고, Figma와 μ½”λ“œκ°€ λͺ¨λ‘ κ·Έ 토큰을 μ°Έμ‘°ν•˜κ²Œ ν•˜μ—¬ ν‘œλ©΄ λ ˆλ²¨μ—μ„œλŠ” μ„œλ‘œλ₯Ό λ™κΈ°ν™”ν•˜μ§€ μ•Šμ•„λ„ μžλ™μœΌλ‘œ μΌμΉ˜μ‹œν‚€λŠ” μ „λž΅μž…λ‹ˆλ‹€.
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ tokens.json (SoT) β”‚ β”‚ (Git 리포 / λ””μžμΈνŒ€ 관리)β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β–Ό β–Ό β–Ό [Figma Variables] [Tailwind [iOS/Android (Tokens Studio config] Theme] ν”ŒλŸ¬κ·ΈμΈ sync) [CSS vars] β”‚ β”‚ β”‚ β–Ό β–Ό β–Ό λ””μžμ΄λ„ˆ μž‘μ—… 개발자 μž‘μ—… λ„€μ΄ν‹°λΈŒ μ•±
Plain Text
볡사

핡심 도ꡬ

β€’
Tokens Studio for Figma (ꡬ Figma Tokens ν”ŒλŸ¬κ·ΈμΈ)
β€’
Style Dictionary (Amazon, 토큰 β†’ λ‹€μ–‘ν•œ ν”Œλž«νΌ λ³€ν™˜)
β€’
Specify / Supernova (μƒμš© 토큰 λ§€λ‹ˆμ €)
β€’
GitHub Actions (토큰 λ³€κ²½ μ‹œ μžλ™ λΉŒλ“œ/배포)

적용 μ‹œλ‚˜λ¦¬μ˜€

β€’
λ©€ν‹° ν”Œλž«νΌ(Web + iOS + Android) μ œν’ˆ
β€’
λ””μžμΈ μ‹œμŠ€ν…œ μ „λ‹΄νŒ€ 쑴재
β€’
λ””μžμ΄λ„ˆκ°€ Variables/토큰 κ°œλ…μ— μ΅μˆ™
β€’
μž₯기적으둜 μš΄μ˜λ˜λŠ” μ„œλΉ„μŠ€

단계별 μ›Œν¬ν”Œλ‘œ

1) 토큰 μ •μ˜ (JSON)

design-tokens/tokens.json:
{ "color": { "brand": { "500": { "value": "#2563EB", "type": "color" }, "900": { "value": "#1E3A8A", "type": "color" } } }, "spacing": { "md": { "value": "16px", "type": "spacing" } } }
JSON
볡사

2) Figma 동기화 (Tokens Studio)

β€’
Tokens Studio ν”ŒλŸ¬κ·ΈμΈ μ„€μΉ˜
β€’
GitHub 리포 μ—°κ²° (design-tokens/tokens.json)
β€’
Pull β†’ Figma Variables둜 μžλ™ λ³€ν™˜
β€’
λ””μžμ΄λ„ˆλŠ” Figmaμ—μ„œ ν† ν°λ§Œ μ‚¬μš©

3) μ½”λ“œ 동기화 (Style Dictionary)

npm install -D style-dictionary
Bash
볡사
style-dictionary.config.js:
module.exports = { source: ['design-tokens/**/*.json'], platforms: { css: { transformGroup: 'css', buildPath: 'src/styles/', files: [{ destination: 'tokens.css', format: 'css/variables' }] }, js: { transformGroup: 'js', buildPath: 'src/', files: [{ destination: 'tokens.ts', format: 'javascript/es6' }] }, tailwind: { transformGroup: 'js', buildPath: 'src/', files: [{ destination: 'tailwind-tokens.js', format: 'javascript/module' }] }, }, }
JavaScript
볡사

4) CI/CD μžλ™ν™” (GitHub Actions)

tokens.json λ³€κ²½ μ‹œ:
1.
Style Dictionary λΉŒλ“œ
2.
Figma Variables 동기화 (Tokens Studio API)
3.
npm νŒ¨ν‚€μ§€ κ²Œμ‹œ (선택)
4.
μ‚¬μš©μ²˜ μžλ™ PR 생성

μž₯점

β€’
싱크 문제λ₯Ό μ›μ²œ 제거: μ»΄ν¬λ„ŒνŠΈ λ‹¨μœ„κ°€ μ•„λ‹Œ 토큰 λ‹¨μœ„λ‘œ 일치
β€’
λ©€ν‹° ν”Œλž«νΌ 일관성
β€’
λ³€κ²½ 좔적 용이: Git 기반 νžˆμŠ€ν† λ¦¬
β€’
λ””μžμ΄λ„ˆ-개발자 곡톡 μ–Έμ–΄ ν˜•μ„±

ν•œκ³„

β€’
μ»΄ν¬λ„ŒνŠΈ 자체의 μ‹±ν¬λŠ” 별도 문제 β€” 이 μ „λž΅μ€ ν† ν°λ§Œ ν•΄κ²°
β€’
초기 μ…‹μ—… λΉ„μš© 큼
β€’
λ””μžμ΄λ„ˆμ˜ ν•™μŠ΅ 곑선 (Variables, Tokens Studio)
β€’
토큰 κ±°λ²„λ„ŒμŠ€(λˆ„κ°€ μΆ”κ°€/λ³€κ²½ κΆŒν•œ) ν•©μ˜ ν•„μš”

λ‹€λ₯Έ μ „λž΅κ³Όμ˜ κ²°ν•©

β€’
02 (Make to Design & Code): Make의 hex 좜λ ₯을 ν† ν°μœΌλ‘œ μžλ™ μΉ˜ν™˜
β€’
05 (Storybook SoT): Storybookμ—μ„œ 토큰 μΉ΄νƒˆλ‘œκ·Έ + μ»΄ν¬λ„ŒνŠΈ μΉ΄νƒˆλ‘œκ·Έ λ™μ‹œ 운영
β€’
07 (MCP μžλ™ν™”): MCPκ°€ μ½”λ“œ 생성 μ‹œ 토큰 κ°•μ œ μ‚¬μš©