0.3.3 β’ Published 9 months ago
invaiz-design-system v0.3.3
π¨ INVAIZ Design System
(μ£Ό)μΈλ°μ΄μ¦μ λμμΈμ λ°μν λμμΈ μμ€ν
ν¨ν€μ§μ
λλ€.
μ¬λ¬ ν¨ν€μ§ λ΄ μΌκ΄μ± μλ λμμΈμ μ μ©νκΈ° μν λͺ©μ μ κ°μ§κ³ μμ΅λλ€.
React, TypeScript λμμΈ μμ€ν
μΌλ‘, @emotionμ μ¬μ©νμ¬ μ€νμΌμ μ§μ ν©λλ€.
- π© κ°λ° λꡬλ λ€μκ³Ό κ°μ΄ μ¬μ©ν©λλ€.
- λ²λ€λ§ λ° κ°λ° μλ² μ€ν:
Vite - μ»΄ν¬λνΈ μ λ ν
μ€νΈ:
Jest,@testing-library - UI ν
μ€νΈ:
storybook - λ¬Έλ² κ²μ¬(μ μ λΆμ):
ESLint - μ½λ ν¬λ§·ν
:
Prettier - κ·Έ μΈ:
Github Actions,chromatic,Netlify
- λ²λ€λ§ λ° κ°λ° μλ² μ€ν:
- ποΈ λμμΈ λꡬλ
Figmaλ₯Ό μ¬μ©ν©λλ€. ESMλͺ¨λ μμ€ν μμ μ¬μ© κ°λ₯ν©λλ€.
β οΈ ν΄λΉ ν¨ν€μ§λ₯Ό μ¬μ©νκΈ° μν΄μλ μ¬μ©νλ €λ ν¨ν€μ§μ μμ‘΄μ± λͺ¨λλ‘
@emotion/react,@emotion/styledκ° ν¬ν¨λμ΄ μμ΄μΌ ν©λλ€.
π νλ‘μ νΈ κ΅¬μ‘°
βοΈ .github
Githubμμ μ°Έμ‘°νλ μμ(Github Actions,IssueμPRκ·μΉ λ±)μ΄ ν¬ν¨νλ ν΄λμ λλ€.chromaticκ³ΌNetlifyλ‘mainμ νΈμ¬ν κ²½μ°, μλμΌλ‘storybookλ¬Έμλ₯Ό λΉλνμ¬ μ λ‘λνλ μ€ν¬λ¦½νΈ λ±μ μ μΈν©λλ€.
βοΈ .storybook
storybookκ³Ό κ΄λ ¨λ μ€μ μ μ§μ νλ ν΄λμ λλ€.WebpackκΈ°λ°μΌλ‘ ꡬνλstorybookμViteμ μ°κ²°νκ³ ,storybookμ μμ μΌλ‘ μ¬μ©ν΄μΌ νλ λ¬Έλ²μ μ§μ ν©λλ€.
βοΈ config
- νλ‘μ νΈμ μ€μ μ μν μΆκ° νμΌμ΄ ν¬ν¨νλ ν΄λμ λλ€.
π¨
distViteλ‘ λΉλλ κ²°κ³Όλ¬Όμ΄ ν¬ν¨λλ ν΄λμ λλ€.- μΈλΆμμ μ¬μ©ν μ μλλ‘
ESMλͺ¨λλ‘ μΆλ ₯λ©λλ€. - νλ‘μ νΈ μμ€ μ½λλ
TypeScriptλ‘, μΈλΆμμ λ°λ‘ μ¬μ©νκΈ° μν΄μλd.tsκ° ν¬ν¨λJavaScriptνμΌλ‘ μ»΄νμΌ(νΈλμ€νμΌ)λμ΄ μμ΄μΌ ν©λλ€. - μ¦,
distν΄λμ μ»΄νμΌλJavaScriptνμΌμ΄ μ‘΄μ¬νμ§ μλλ€λ©΄ ν΄λΉ ν¨ν€μ§λ μΈλΆμμ μ¬μ©ν μ μμ΅λλ€.
π docs
- ν¨ν€μ§ λ΄μμ μ§μΌμΌ ν κ·μΉ λ± λ¬Έμνλ μλ£λ₯Ό ν¬ν¨νλ ν΄λμ λλ€.
π public
Viteκ° κ°λ° λͺ¨λλ‘ μ€νλ λReactμ ν리μΌμ΄μ μμ μ°Έμ‘°ν μ μ νμΌμ ν¬ν¨νλ ν΄λμ λλ€.
π src
- νλ‘μ νΈμ μμ€ μ½λκ° ν¬ν¨νλ ν΄λμ λλ€.
- μΈλ°μ΄μ¦μμ μ¬μ©νλ λμμΈ μμ€ν μ λͺ¨λ ν¬ν¨ν©λλ€.
βοΈ .eslintrc
- λ£¨νΈ ν΄λμ μλ μ€μ μ μμ λ°κ³ ,
storybookνμΌμμμ μ€μ μ μ§μ νκ³ μμ΅λλ€.
- λ£¨νΈ ν΄λμ μλ μ€μ μ μμ λ°κ³ ,
βοΈ .gitignore
Gitμμ μΆμ νμ§ μμμΌ νλ νμΌ λ¦¬μ€νΈλ₯Ό λͺ μν νμΌμ λλ€.storybookλΉλ νμΌμ μ λ‘λνμ§ μλ μ€μ μ μΆκ°ν©λλ€.
π index.html
Viteκ° κ°λ° λͺ¨λλ‘ μ€νλ λReactμ ν리μΌμ΄μ μ΄ κ΅¬λλHTMLμνΈλ¦¬ ν¬μΈνΈ νμ΄μ§μ λλ€.
βοΈ jest.config.ts
- ν
μ€νΈ νκ²½μ ꡬμ±νλ
Jestμ μ€μ μ λͺ μν©λλ€.
- ν
μ€νΈ νκ²½μ ꡬμ±νλ
π¦ package.json
invaiz-design-systemν¨ν€μ§μμ μ¬μ©νλ μμ‘΄μ± λͺ¨λμ λͺ μν©λλ€.
βοΈ tsconfig.json
- λ£¨νΈ ν΄λμ μλ μ€μ μ μμλ°μ
aliasλ₯Ό μ§μ νκ³ μμ΅λλ€.
- λ£¨νΈ ν΄λμ μλ μ€μ μ μμλ°μ
βοΈ vite.config.ts
SVGνμΌμ 리μ‘νΈ μ»΄ν¬λνΈμ²λΌ μ¬μ©ν μ μλvite-plugin-svgrκ° λͺ μλμ΄ μμ΅λλ€.- μΈλΆμμ λΌμ΄λΈλ¬λ¦¬ λͺ¨λ ννλ‘ μ κ·Όν μ μλλ‘ λΉλνλ μ€μ λ₯Ό ν¬ν¨ν©λλ€.
- κ°λ° μλ²λ₯Ό μ΄κΈ° μν μ 보λ₯Ό ν¬ν¨νκ³ μμ΅λλ€.
π νλ‘μ νΈ νκ²½ μꡬ μ¬ν
node:v20.x.xμ΄μpnpm:v9.x.xμ΄μ
π μ¬μ μμ
- μ€μΉ λͺ λ Ήμ΄λ₯Ό μλμ κ°μ΄ ν΄μΌλ§ ν©λλ€.
pnpm install --shamefully-hoistπ¬ μ¬μ© κ°λ₯ν μ€ν¬λ¦½νΈ
pnpm startViteκ°λ° νκ²½μΌλ‘ λμν©λλ€./src/**/*λ΄μ νμΌ μμ μHot-Loaderκ° μ μ©λ©λλ€.8080ν¬νΈμμ κ°λ° μλ²λ₯Ό μ€νν©λλ€.
pnpm buildViteλ₯Ό μ¬μ©ν΄μ ν¨ν€μ§ μμ€λ₯Ό μΈλΆμμ μ¬μ©ν μ μλλ‘ λ²λ€λ§, λΉλν©λλ€.- κ²°κ³Όλ¬Όμ΄
d.tsμ ν¨κ»ESMλͺ¨λλ‘distν΄λμ μμ±λ©λλ€.
pnpm testJestλ₯Ό μ¬μ©νμ¬ νλ‘μ νΈ ν΄λ λ΄μ ν μ€νΈλ₯Ό λͺ¨λ μ€νν©λλ€.*.test.js,*.test.ts,*.spec.js,*.spec.tsνμΌμ ν μ€νΈ νμΌλ‘ μΈμν©λλ€.`
pnpm test:watchJestλ₯Ό μ¬μ©νμ¬ νλ‘μ νΈ ν΄λ λ΄μ ν μ€νΈλ₯Ό λͺ¨λ μ€ννκ³ , νμΌμ λ³κ²½μ μ§μμ μΌλ‘ κ°μν©λλ€.`
pnpm test:snapshotJestλ₯Ό μ¬μ©ν΄ μ€λ μ· ν μ€νΈλ₯Ό μνν©λλ€.- μ€λ μ· ν μ€νΈλ‘ μ μΈλμ΄ μλ νμΌλ€μ μ»΄ν¬λνΈ λ λλ§ μνλ₯Ό νμΈνκ³ , μλ‘ μ°μ΄λ λλ€.
pnpm test:clearJestμ μΊμλ νμΌμ λͺ¨λ μμ ν©λλ€.`
pnpm eslintsrcλ΄μ μμ€ μ½λλ₯Όeslintλ₯Ό μ¬μ©νμ¬ κ²μ¬ν©λλ€.
pnpm eslint:fixsrcλ΄μ μμ€ μ½λλ₯Όeslintλ₯Ό μ¬μ©νμ¬ κ²μ¬νκ³ , μμ ν μ μλ λΆλΆμ μλμΌλ‘ μμ ν©λλ€.
pnpm prettiersrcλ΄μ μμ€ μ½λλ₯Όprettierλ₯Ό μ¬μ©νμ¬ κ²μ¬ν©λλ€.
pnpm prettier:fixsrcλ΄μ μμ€ μ½λλ₯Όprettierλ₯Ό μ¬μ©νμ¬ κ²μ¬νκ³ , μμ ν μ μλ λΆλΆμ μλμΌλ‘ μμ ν©λλ€.
pnpm storybookStorybookνμ΄μ§λ₯Ό κ°λ° νκ²½μ μ€νν©λλ€.6006ν¬νΈμμ νμ΄μ§λ₯Ό μ€νν©λλ€.
pnpm build-storybookStorybookνμ΄μ§λ₯Ό λΉλν©λλ€.- λΉλ μλ£λ νμΌμ
storybook-staticν΄λμ μμ±λ©λλ€.