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κ° μ½λ μμ± μ ν ν° κ°μ μ¬μ©
