INVAIZ Design System development project
npm install 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
- νλ‘μ νΈμ μ€μ μ μν μΆκ° νμΌμ΄ ν¬ν¨νλ ν΄λμ
λλ€.
- ### π¨ dist
- Viteλ‘ λΉλλ κ²°κ³Όλ¬Όμ΄ ν¬ν¨λλ ν΄λμ
λλ€.
- μΈλΆμμ μ¬μ©ν μ μλλ‘ 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 μ΄μ
- μ€μΉ λͺ λ Ήμ΄λ₯Ό μλμ κ°μ΄ ν΄μΌλ§ ν©λλ€.
``shell`
pnpm install --shamefully-hoist
- ### pnpm start
- Vite κ°λ° νκ²½μΌλ‘ λμν©λλ€./src/*/
- λ΄μ νμΌ μμ μ Hot-Loaderκ° μ μ©λ©λλ€.8080
- ν¬νΈμμ κ°λ° μλ²λ₯Ό μ€νν©λλ€.pnpm build
- ### Vite
- λ₯Ό μ¬μ©ν΄μ ν¨ν€μ§ μμ€λ₯Ό μΈλΆμμ μ¬μ©ν μ μλλ‘ λ²λ€λ§, λΉλν©λλ€.d.ts
- κ²°κ³Όλ¬Όμ΄ μ ν¨κ» ESM λͺ¨λλ‘ dist ν΄λμ μμ±λ©λλ€.pnpm test
- ### Jest
- λ₯Ό μ¬μ©νμ¬ νλ‘μ νΈ ν΄λ λ΄μ ν
μ€νΈλ₯Ό λͺ¨λ μ€νν©λλ€..test.js
- , .test.ts, .spec.js, .spec.ts νμΌμ ν
μ€νΈ νμΌλ‘ μΈμν©λλ€.
- ### pnpm test:watch
- Jestλ₯Ό μ¬μ©νμ¬ νλ‘μ νΈ ν΄λ λ΄μ ν
μ€νΈλ₯Ό λͺ¨λ μ€ννκ³ , νμΌμ λ³κ²½μ μ§μμ μΌλ‘ κ°μν©λλ€.pnpm test:snapshot
- ### Jest
- λ₯Ό μ¬μ©ν΄ μ€λ
μ· ν
μ€νΈλ₯Ό μνν©λλ€.pnpm test:clear
- μ€λ
μ· ν
μ€νΈλ‘ μ μΈλμ΄ μλ νμΌλ€μ μ»΄ν¬λνΈ λ λλ§ μνλ₯Ό νμΈνκ³ , μλ‘ μ°μ΄λ
λλ€.
- ### Jest
- μ μΊμλ νμΌμ λͺ¨λ μμ ν©λλ€.
- ### pnpm eslint
- src λ΄μ μμ€ μ½λλ₯Ό eslintλ₯Ό μ¬μ©νμ¬ κ²μ¬ν©λλ€.
- ### pnpm eslint:fix
- src λ΄μ μμ€ μ½λλ₯Ό eslintλ₯Ό μ¬μ©νμ¬ κ²μ¬νκ³ , μμ ν μ μλ λΆλΆμ μλμΌλ‘ μμ ν©λλ€.
- ### pnpm prettier
- src λ΄μ μμ€ μ½λλ₯Ό prettierλ₯Ό μ¬μ©νμ¬ κ²μ¬ν©λλ€.
- ### pnpm prettier:fix
- src λ΄μ μμ€ μ½λλ₯Ό prettierλ₯Ό μ¬μ©νμ¬ κ²μ¬νκ³ , μμ ν μ μλ λΆλΆμ μλμΌλ‘ μμ ν©λλ€.
- ### pnpm storybook
- Storybook νμ΄μ§λ₯Ό κ°λ° νκ²½μ μ€νν©λλ€.
- 6006 ν¬νΈμμ νμ΄μ§λ₯Ό μ€νν©λλ€.
- ### pnpm build-storybook
- Storybook νμ΄μ§λ₯Ό λΉλν©λλ€.
- λΉλ μλ£λ νμΌμ storybook-static ν΄λμ μμ±λ©λλ€.