π±οΈ Node Utils
μ΄ ν¨ν€μ§λ NPM κ³΅κ° λ°°ν¬λ₯Ό μν μ€μ μ΄ package.json
μ ν¬ν¨λμ΄ μμ΄μ.
λ°°ν¬λ₯Ό μνμ§ μμ κ²½μ°, package.json
μμ μλμ μ€μ λ€μ μ κ±°ν΄μ£ΌμΈμ:
{
"private": false,
"publishConfig": {
"access": "public"
},
}
π κ°μ
node-utils
ν¨ν€μ§λ Node.js νκ²½μμ μ¬μ©ν μ μλ λ€μν μ νΈλ¦¬ν° ν¨μλ€μ μ 곡νλ ν¨ν€μ§μμ.
π― μ£Όμ λͺ©ν
Node.js νκ²½μμ λμνλ μ ν¨ν€μ§λ₯Ό μΆκ°νκ³ μΆμ λ, μ΄ ν¨ν€μ§λ₯Ό 볡μ¬νμ¬ κ°λ°μ μμμ μΌλ‘ μΌμ μ μλλ‘, μλμ κ°μ λͺ©μ λ€μ κ°μ§κ³ μμ±λμμ΄μ:
- os, fs, process λ± Node.js νκ²½μμ μ 곡λλ API λ€μ νμ©ν μ μλλ‘ κΈ°λ³Έμ μΈ λΉλ μ€μ
- μ½λ μ€ν리ν λ° νΈλ¦¬ μμ΄νΉμ μ§μνκΈ° μν Vite κΈ°λ° λΉλ μ€μ
- TypeScript μ μΈ νμΌ μ 곡μ μν μ€μ
- npm κ³΅κ° λ°°ν¬ μ νμν κ°μ’
package.json
κ΄λ ¨ μ€μ
π¦ μ 곡 κΈ°λ₯
- fs: νμΌ μμ€ν κ΄λ ¨ μ νΈλ¦¬ν° ν¨μλ€μ μ 곡ν΄μ.
- msw: API λͺ©μ μ μν MSW κ΄λ ¨ μ νΈλ¦¬ν° ν¨μλ€μ μ 곡ν΄μ.
- misc: κΈ°ν μ μ©ν μ νΈλ¦¬ν° ν¨μλ€μ μ 곡ν΄μ.
π οΈ λΉλ λ°©μ λ° μ£Όμ μ€μ
μ΄ ν¨ν€μ§λ Viteμ TypeScriptλ₯Ό κΈ°λ°μΌλ‘ λ©ν° μνΈλ¦¬ λΌμ΄λΈλ¬λ¦¬ ννλ‘ λΉλλ©λλ€.
κ° κΈ°λ₯λ³λ‘ λ³λμ μνΈλ¦¬(fs
, msw
, misc
)λ₯Ό μ 곡νλ©°, λΉλ μ°μΆλ¬Όμ dist
ν΄λμ ES λͺ¨λ(.es.js
)κ³Ό CommonJS(.cjs.js
) νμμΌλ‘ μμ±λ©λλ€.
package.json
- exports: κ° κΈ°λ₯λ³ μνΈλ¦¬(
./fs
,./msw
,./misc
)λ₯Ό λΆλ¦¬ν΄ νμ μ μΈ(.d.ts
), ES λͺ¨λ, CJS λͺ¨λμ λͺ¨λ μ 곡ν©λλ€. - publishConfig:
"access": "public"
μΌλ‘ npm κ³΅κ° λ°°ν¬κ° κ°λ₯νλλ‘ μ€μ λμ΄ μμ΅λλ€. - files: λΉλ μ°μΆλ¬Ό(
dist
)λ§ ν¨ν€μ§μ ν¬ν¨λλλ‘ μ§μ ν©λλ€. - scripts: Viteμ TypeScriptλ₯Ό νμ©ν λΉλ, νμ 체ν¬, ν μ€νΈ λ± λ€μν κ°λ° μ€ν¬λ¦½νΈκ° μ μλμ΄ μμ΅λλ€.
vite.config.ts
- λ©ν° μνΈλ¦¬ λΉλ:
shared/helpers
μμ μ 곡νλrunWithGlob
μ νΈμ νμ©ν΄src
ν΄λ λ΄μ κ° μνΈλ¦¬ νμΌμ μλμΌλ‘ κ°μ§νμ¬ λΉλ μνΈλ¦¬λ‘ λ±λ‘ν©λλ€. - λΌμ΄λΈλ¬λ¦¬ λͺ¨λ: Viteμ λΌμ΄λΈλ¬λ¦¬ λͺ¨λλ₯Ό μ¬μ©ν΄ ES/CJS ν¬λ§·μΌλ‘ κ°κ° λΉλν©λλ€.
- νμ
μ μΈ:
vite-plugin-dts
λ‘ κ° μνΈλ¦¬λ³ νμ μ μΈ νμΌμ μλ μμ±ν©λλ€. - κ²½λ‘ λ³μΉ:
vite-tsconfig-paths
λ‘ TypeScript κ²½λ‘ λ³μΉμ μ§μν©λλ€.
tsconfig.json
- λͺ¨λ ν΄μ:
"moduleResolution": "bundler"
λ‘ λ²λ€λ¬ μΉνμ μΈ λͺ¨λ ν΄μμ μ¬μ©ν©λλ€. - νμ μ§μ: μ΅μ ECMAScript λ° Node.js νμ μ μ§μνλλ‘ μ€μ λμ΄ μμ΅λλ€.
- μ격 λͺ¨λ: νμ κ²μ¬ λ° λ¦°νΈ κ΄λ ¨ μ΅μ μ΄ μ격νκ² μ μ©λμ΄ μμ΅λλ€.
- κ²½λ‘ λ³μΉ:
tsconfig.json
μμ μ μλ κ²½λ‘ λ³μΉμ μ¬μ©νμ¬ μ½λ κ°λ μ±μ λμ λλ€.