Skip to Content
Nextra 4.0 is released πŸŽ‰

🌐 Browser Utils

이 νŒ¨ν‚€μ§€λŠ” NPM 곡개 배포λ₯Ό μœ„ν•œ 섀정이 package.json에 ν¬ν•¨λ˜μ–΄ μžˆμ–΄μš”. 배포λ₯Ό μ›ν•˜μ§€ μ•Šμ„ 경우, package.jsonμ—μ„œ μ•„λž˜μ˜ 섀정듀을 μ œκ±°ν•΄μ£Όμ„Έμš”:

package.json
{ "private": false, "publishConfig": { "access": "public" }, }

πŸ“– κ°œμš”

browser-utils νŒ¨ν‚€μ§€λŠ” λΈŒλΌμš°μ € ν™˜κ²½μ—μ„œ μœ μš©ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆλŠ” μœ ν‹Έλ¦¬ν‹° ν•¨μˆ˜μ™€ 도ꡬλ₯Ό μ œκ³΅ν•΄μš”.

🎯 μ£Όμš” λͺ©ν‘œ

λΈŒλΌμš°μ €μ—μ„œ λ™μž‘ν•˜λŠ” μƒˆ νŒ¨ν‚€μ§€λ₯Ό μΆ”κ°€ν•˜κ³  싢을 λ•Œ, 이 νŒ¨ν‚€μ§€λ₯Ό λ³΅μ‚¬ν•˜μ—¬ 개발의 μ‹œμž‘μ μœΌλ‘œ 삼을 수 μžˆλ„λ‘, μ•„λž˜μ™€ 같은 λͺ©μ λ“€μ„ κ°€μ§€κ³  μž‘μ„±λ˜μ—ˆμ–΄μš”:

  • DOM λ“± λΈŒλΌμš°μ € ν™˜κ²½μ—μ„œ μ œκ³΅λ˜λŠ” API 듀을 ν™œμš©ν•  수 μžˆλ„λ‘ 기본적인 λΉŒλ“œ μ„€μ •
  • μ½”λ“œ μŠ€ν”Œλ¦¬νŒ… 및 트리 쉐이킹을 μ§€μ›ν•˜κΈ° μœ„ν•œ Vite 기반 λΉŒλ“œ μ„€μ •
  • TypeScript μ„ μ–Έ 파일 μ œκ³΅μ„ μœ„ν•œ μ„€μ •
  • npm 곡개 배포 μ‹œ ν•„μš”ν•œ 각쒅 package.json κ΄€λ ¨ μ„€μ •

πŸ“¦ 제곡 κΈ°λŠ₯

browser-utils νŒ¨ν‚€μ§€λŠ” λΈŒλΌμš°μ € ν™˜κ²½μ—μ„œ λ™μž‘ν•˜λŠ” κΈ°λŠ₯λ“€μ˜ μ˜ˆμ‹œλ‘œμ„œ, λ‹€μŒκ³Ό 같은 μƒ˜ν”Œ κΈ°λŠ₯듀을 ν¬ν•¨ν•˜κ³  μžˆμ–΄μš”:

  • DOM: λΈŒλΌμš°μ € DOM μ‘°μž‘μ„ μœ„ν•œ μœ ν‹Έλ¦¬ν‹° ν•¨μˆ˜ μ œκ³΅ν•΄μš”.
  • MSW: Mock Service Worker와 κ΄€λ ¨λœ μœ ν‹Έλ¦¬ν‹°λ₯Ό μ œκ³΅ν•΄μš”.
  • String: λ¬Έμžμ—΄ μ²˜λ¦¬μ™€ κ΄€λ ¨λœ μœ ν‹Έλ¦¬ν‹° ν•¨μˆ˜ μ œκ³΅ν•΄μš”.

πŸ› οΈ λΉŒλ“œ 방식 및 μ£Όμš” μ„€μ •

이 νŒ¨ν‚€μ§€λŠ” Vite와 TypeScriptλ₯Ό 기반으둜 λ©€ν‹° μ—”νŠΈλ¦¬ 라이브러리 ν˜•νƒœλ‘œ λΉŒλ“œλ©λ‹ˆλ‹€.
각 κΈ°λŠ₯λ³„λ‘œ λ³„λ„μ˜ μ—”νŠΈλ¦¬(string, dom, msw)λ₯Ό μ œκ³΅ν•˜λ©°, λΉŒλ“œ μ‚°μΆœλ¬Όμ€ dist 폴더에 ES λͺ¨λ“ˆ(.es.js)κ³Ό CommonJS(.cjs.js) ν˜•μ‹μœΌλ‘œ μƒμ„±λ©λ‹ˆλ‹€.

package.json

  • exports: 각 κΈ°λŠ₯λ³„λ‘œ μ—”νŠΈλ¦¬(./string, ./dom, ./msw)λ₯Ό 뢄리해 νƒ€μž… μ„ μ–Έ(.d.ts), ES λͺ¨λ“ˆ, CJS λͺ¨λ“ˆμ„ λͺ¨λ‘ μ œκ³΅ν•©λ‹ˆλ‹€.
  • publishConfig: "access": "public"으둜 npm 곡개 배포가 κ°€λŠ₯ν•˜λ„λ‘ μ„€μ •λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
  • files: λΉŒλ“œ μ‚°μΆœλ¬Ό(dist)만 νŒ¨ν‚€μ§€μ— ν¬ν•¨λ˜λ„λ‘ μ§€μ •ν•©λ‹ˆλ‹€.
  • scripts: Vite와 TypeScriptλ₯Ό ν™œμš©ν•œ λΉŒλ“œ, νƒ€μž… 체크, ν…ŒμŠ€νŠΈ, MSW μ΄ˆκΈ°ν™” λ“± λ‹€μ–‘ν•œ 개발 μŠ€ν¬λ¦½νŠΈκ°€ μ •μ˜λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
  • msw: MSW μ›Œμ»€ 파일의 배포 디렉터리λ₯Ό μ§€μ •ν•˜λŠ” 섀정이 ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

vite.config.ts

  • λ©€ν‹° μ—”νŠΈλ¦¬ λΉŒλ“œ: shared/helpers μ—μ„œ μ œκ³΅ν•˜λŠ” runWithGlob μœ ν‹Έμ„ ν™œμš©ν•΄ src 폴더 λ‚΄μ˜ 각 μ—”νŠΈλ¦¬ νŒŒμΌμ„ μžλ™μœΌλ‘œ κ°μ§€ν•˜μ—¬ λΉŒλ“œ μ—”νŠΈλ¦¬λ‘œ λ“±λ‘ν•©λ‹ˆλ‹€.
  • 라이브러리 λͺ¨λ“œ: Vite의 라이브러리 λͺ¨λ“œλ₯Ό μ‚¬μš©ν•΄ ES/CJS 포맷으둜 각각 λΉŒλ“œν•©λ‹ˆλ‹€.
  • νƒ€μž… μ„ μ–Έ: vite-plugin-dts둜 각 μ—”νŠΈλ¦¬λ³„ νƒ€μž… μ„ μ–Έ νŒŒμΌμ„ μžλ™ μƒμ„±ν•©λ‹ˆλ‹€.
  • 경둜 별칭: vite-tsconfig-paths둜 TypeScript 경둜 별칭을 μ§€μ›ν•©λ‹ˆλ‹€.

tsconfig.json

  • λͺ¨λ“ˆ 해석: "moduleResolution": "bundler"둜 λ²ˆλ“€λŸ¬ μΉœν™”μ μΈ λͺ¨λ“ˆ 해석을 μ‚¬μš©ν•©λ‹ˆλ‹€.
  • νƒ€μž… 지원: μ΅œμ‹  ECMAScript 및 DOM νƒ€μž…μ„ μ§€μ›ν•˜λ„λ‘ μ„€μ •λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
  • 엄격 λͺ¨λ“œ: νƒ€μž… 검사 및 린트 κ΄€λ ¨ μ˜΅μ…˜μ΄ μ—„κ²©ν•˜κ²Œ μ μš©λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€

Last updated on