λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

πŸ‘¨‍πŸ’» web.dev51

Storybook loaders 둜 story에 비동기 데이터 μ£Όμž…ν•˜κΈ° πŸ“Œ loaders 둜 데이터 μ „λ‹¬ν•˜κΈ° Storybook 6.1 λΆ€ν„° μ‹€ν—˜μ  κΈ°λŠ₯으둜 loaders κ°€ μΆ”κ°€λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ•ˆμ •ν™” 기간을 거쳐 Storybook 7.0 μ—μ„œλŠ” stable 둜 λ³€κ²½λ˜μ—ˆλŠ”λ°μš”. 기쑴에 args λ₯Ό 톡해 μ»΄ν¬λ„ŒνŠΈμ— 데이터λ₯Ό μ „λ‹¬ν•΄μ£ΌλŠ” λŒ€μ‹ , loaders 에 데이터λ₯Ό λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜λ₯Ό μ •μ˜ν•¨μœΌλ‘œμ„œ μŠ€ν† λ¦¬λΆ render context 에 이λ₯Ό ν• λ‹Ήν•  수 μžˆλŠ” 방법이 μΆ”κ°€λ˜μ—ˆμŠ΅λ‹ˆλ‹€. λͺ¨λ“  μŠ€ν† λ¦¬μ— μ μš©λ˜λŠ”μ§€ μœ λ¬΄μ— 따라 global loader 와 story loader 두 가지 λ°©μ‹μœΌλ‘œ λ‚˜λ‰˜λŠ”λ°, 이번 κ²½μš°μ—λŠ” κ°œλ³„ μŠ€ν† λ¦¬μ— μ£Όμž…μ΄ ν•„μš”ν•΄μ„œ story loader 방식을 μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€. πŸ“Œ μ˜ˆμ‹œλ‘œ μ‚΄νŽ΄λ΄…μ‹œλ‹€. λ‹€μŒκ³Ό 같은 μ›Ή μ»΄ν¬λ„ŒνŠΈκ°€ μžˆλ‹€κ³  ν•˜κ² μŠ΅λ‹ˆλ‹€. ν•΄λ‹Ή μ»΄ν¬λ„ŒνŠΈλŠ” μž‘μ€ μΊ”λ²„μŠ€μ— .. 2023. 6. 24.
Storybook μ—μ„œ μ»΄ν¬λ„ŒνŠΈ λ‹¨μœ„ ν…ŒμŠ€νŠΈν•˜κΈ° πŸ“Œ λ“€μ–΄κ°€λ©° μŠ€ν† λ¦¬λΆμ€ component driven development νŒ¨λŸ¬λ‹€μž„μ„ μœ„ν•œ μœ μš©ν•œ 개발 λ„κ΅¬λ‘œ λ‹¨μˆœνžˆ UI λ₯Ό ν™•μΈν•˜λŠ” μš©λ„λ₯Ό λ„˜μ–΄μ„œμ„œ ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•œ λ‹€μ–‘ν•œ μ†”λ£¨μ…˜λ„ ν•¨κ»˜ μ œκ³΅ν•΄μ£Όκ³  μžˆμŠ΅λ‹ˆλ‹€. 이번 ν¬μŠ€νŠΈμ—μ„œλŠ” 이λ₯Ό ν™œμš©ν•œ ν…ŒμŠ€νŠΈ 적용 사둀에 λŒ€ν•΄ μ‚΄νŽ΄λ³΄κ³ μžν•©λ‹ˆλ‹€. μš°μ„  이번 포슀트λ₯Ό μœ„ν•œ ν”„λ‘œμ νŠΈμ˜ νŒ¨ν‚€μ§€ 버전 μ •λ³΄λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. πŸ“¦ project dependency - react/react-dom: 17.0.2 - next: 12.1.1 - storybook: 7.0.4 - typescript: 5.0.3 ✨ Next.js + jest & storybook μ„€μ •ν•˜κΈ° πŸ“Œ Next.js + jest μ„€μ • μœ λ‹›ν…ŒμŠ€νŠΈ, μŠ€λƒ…μƒ·ν…ŒμŠ€νŠΈ μž‘μ„±ν•˜κΈ° 전에 jest λ¨Όμ € μ„€μΉ˜ν•©λ‹ˆλ‹€. Next.js.. 2023. 6. 24.
TDD 와 ν•¨κ»˜ 사내 μ„œλΉ„μŠ€ κ°œμ„ ν•˜κΈ° πŸ“Œ TDD λ₯Ό ν™œμš©ν•΄λ³ΌκΉŒ? μ΄λ²ˆμ— μ‚¬λ‚΄μ—μ„œ μ‚¬μš©ν•˜κ³  μžˆλŠ” 메일 ν…œν”Œλ¦Ώ ν”„λ‘œμ νŠΈλ₯Ό 손볼 κΈ°νšŒκ°€ μƒκ²ΌμŠ΅λ‹ˆλ‹€. μƒˆλ‘œμš΄ 메일 배포 방식 적용이 ν•„μš”ν–ˆλŠ”λ°, 이λ₯Ό μœ„ν•΄μ„œλŠ” κΈ°μ‘΄ ν”„λ‘œμ„ΈμŠ€μ— λŒ€ν•œ 이해가 ν•„μš”ν–ˆμŠ΅λ‹ˆλ‹€. μƒˆλ‘­κ²Œ νˆ¬μž…λœ ν”„λ‘œμ νŠΈμ— κΈ°λŠ₯을 μΆ”κ°€ν•˜κ±°λ‚˜ μˆ˜μ •ν•˜λŠ” 것은 영ν–₯도에 따라 쉽지 μ•Šμ„ 수 μžˆλŠ” μž‘μ—…μΈλ°, μ΄λ²ˆμ— 맑은 업무가 ν•΄λ‹Ή μ„œλΉ„μŠ€ μ½”λ“œ μ „λ°˜μ μœΌλ‘œ μˆ˜μ •μ΄ ν•„μš”ν–ˆλ˜ μž‘μ—…μ΄λΌ λ”μš± 고민이 λ§Žμ•˜λ˜ 것 κ°™μŠ΅λ‹ˆλ‹€. μ•ˆμ •μ μΈ μ„œλΉ„μŠ€ 개발 및 λ¦¬νŒ©ν† λ§μ„ μœ„ν•΄ TDD λ₯Ό 적극적으둜 ν™œμš©ν•΄λ³Ό 수 μžˆλŠ” 쒋은 기회둜 보여 적용 및 후기에 κ΄€ν•œ 포슀트λ₯Ό μž‘μ„±ν•΄λ΄€μŠ΅λ‹ˆλ‹€. πŸ’‘ 이번 ν¬μŠ€νŠΈμ—μ„œ TDD νŒ¨λŸ¬λ‹€μž„μ— λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ„ λ‹€λ£¨μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€. πŸ€” TDD λž€? κ°„λ‹¨ν•˜κ²Œ TDD 에 λŒ€ν•΄μ„œ μ‚΄νŽ΄λ³΄κ³  κ°€κ² μŠ΅λ‹ˆλ‹€. TDDλŠ” ν…Œ.. 2023. 5. 15.
DOM event.composed (shadow root λ°–μœΌλ‘œ 이벀트 μ „νŒŒμ‹œν‚€κΈ°) πŸ“Œ CustomEvent κ°€ shadow root λ°–μœΌλ‘œ μ „νŒŒλ˜μ§€ μ•ŠλŠ”λ‹€? shadow DOM κ³Ό ν•¨κ»˜ μž‘μ—…ν•˜λ‹€λ³΄λ©΄ CustomEvent 둜 μƒμ„±ν•œ μ΄λ²€νŠΈκ°€ shadow DOM boundary λ₯Ό λ²—μ–΄λ‚˜μ„œ μ „νŒŒ λ˜μ§€ μ•ŠλŠ” 이슈λ₯Ό λ§ˆμ£Όν•˜κ²Œ λ˜λŠ”λ°, μ΄λŠ” μ˜λ„λœ λ™μž‘μž…λ‹ˆλ‹€. μ˜ˆμ‹œλ‘œ μ‚΄νŽ΄λ΄…μ‹œλ‹€. λ‹€μŒκ³Ό 같은 menu μ»΄ν¬λ„ŒνŠΈκ°€ μžˆλ‹€κ³  ν•˜κ² μŠ΅λ‹ˆλ‹€. μž¬μ‚¬μš©μ„±μ„ μœ„ν•΄ 곡톡 메뉴 λ‘œμ§μ„ 담은 μ»΄ν¬λ„ŒνŠΈμž…λ‹ˆλ‹€. μ½”λ“œλŠ” λ‹¨μˆœν™”μ‹œμΌ°μ§€λ§Œ, open 속성이 true κ°€ 되면 ν•΄λ‹Ή 메뉴 μ—˜λ¦¬λ¨ΌνŠΈμ˜ overlay μ„ νƒμ‹œμ— 메뉴λ₯Ό λ‹«κΈ° μœ„ν•œ μ»€μŠ€ν…€ 이벀트λ₯Ό λ°œμƒμ‹œν‚€λŠ” ν•Έλ“€λŸ¬λ₯Ό λΆ€μ°©ν•˜λŠ” νλ¦„μœΌλ‘œ μ§„ν–‰λ©λ‹ˆλ‹€. export default class MyMenu extends HTMLElement { // ... other logics a.. 2023. 5. 15.
GitHub Actions λ₯Ό ν™œμš©ν•œ release bot λ§Œλ“€κΈ° μ΄λ²ˆμ— μ‚¬λ‚΄μ—μ„œ 메일 ν…œν”Œλ¦Ώμ„ κ΄€λ¦¬ν•˜λŠ” ν”„λ‘œμ νŠΈμ˜ 배포 방식을 λ³€κ²½ν•˜λŠ” 업무λ₯Ό 맑아 μ§„ν–‰ν•˜λ©° Github Action (μ΄ν•˜ GHA)을 닀뀄볼 κΈ°νšŒκ°€ μƒκ²ΌμŠ΅λ‹ˆλ‹€. GHA둜 PRμ—μ„œ νŠΉμ • comment λ₯Ό 남기면, 변경사항을 λ°°ν¬ν•΄μ£ΌλŠ” μžλ™ν™” ν”„λ‘œμ„ΈμŠ€λ₯Ό λ§Œλ“€κ³  μ‹Άμ—ˆλŠ”λ° GHA μ‚¬μš©μ΄ 처음이라 κ½€λ‚˜ λ§Žμ€ μ‚½μ§ˆμ„ ν•΄μ„œ λΉ„μŠ·ν•œ κΈ°λŠ₯을 κ΅¬ν˜„ν•˜κ³  싢은 뢄듀을 μœ„ν•΄ 기둝을 λ‚¨κΈ°λ €κ³ ν•©λ‹ˆλ‹€. πŸ“Œ PR comment echo ν…ŒμŠ€νŠΈν•˜κΈ° μš°μ„  PRμ—μ„œ νŠΉμ • λͺ…λ Ήμ–΄λ₯Ό 담은 λŒ“κΈ€μ„ 남기면, 이λ₯Ό κ°μ§€ν•˜λŠ” workflow λ₯Ό μž‘μ„±ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. release λΌλŠ” comment λ₯Ό 남기면 workflow κ°€ ν•΄λ‹Ή PR 에 λŒ“κΈ€λ‘œ μ‘λ‹΅ν•΄μ£ΌλŠ” workflow λ₯Ό μž‘μ„±ν•©λ‹ˆλ‹€. comment μΆ”κ°€λŠ” issue_comment event λ₯Ό.. 2023. 4. 24.
React Framer Motion 톺아보기 πŸ“Œ Framer Motion? Framer Motion 은 React 둜 개발된 Animation Library μž…λ‹ˆλ‹€. κ΄€λ ¨λœ νŒ¨ν‚€μ§€μ€‘μ— μ§€μ†μ μœΌλ‘œ μ‚¬μš©λŸ‰ 및 관심도가 μ¦κ°€ν•˜κ³  μžˆλŠ” μΆ”μ„Έμž…λ‹ˆλ‹€. πŸ“ˆ μ›Ήμ•±μ—μ„œ μ• λ‹ˆλ©”μ΄μ…˜μ„ λ‹€λ£¨λŠ” λ‹€μ–‘ν•œ 방법이 μžˆμ§€λ§Œ, λ‹€μ–‘ν•œ ν™˜κ²½μ—μ„œ μΆ©λΆ„ν•œ μ„±λŠ₯을 κ³ λ €ν•˜μ—¬ κ΅¬ν˜„ν•˜κΈ°μ—λŠ” 생각보닀 κ³ λ €ν•  사항이 많고 κΉŒλ‹€λ‘œμš΄ 것이 μ‚¬μ‹€μž…λ‹ˆλ‹€. 이번 μœ„ν΄λ¦¬μ—μ„œλŠ” μ΄λŸ¬ν•œ 뢀뢄에 도움이 λ μˆ˜λ„ μžˆλŠ” νŒ¨ν‚€μ§€λ₯Ό μ†Œκ°œν•΄λ³΄λŠ” μ‹œκ°„μ„ κ°€μ Έλ³΄λ €ν•©λ‹ˆλ‹€. πŸ“Œ TL;DR Framer Motion 의 νŠΉμ§• TypeScript 지원 μ΅œμ ν™”λœ μ„±λŠ₯ 및 ν’λΆ€ν•œ API physics 기반의 사싀적인 transition효과 제곡 (spring, tween, inertia) λͺ¨λ˜ μ›Ήμ•±μ—μ„œ 반볡적으둜 ν•„μš”λ‘œ ν•˜λŠ” μ—¬λŸ¬ λͺ¨μ…˜λ“€.. 2023. 3. 27.