πŸ“¦ package.jsonλ₯Ό ν†Ίμ•„λ³΄μž

μ‹ νƒœμΌΒ·2024λ…„ 10μ›” 17일
post-thumbnail

πŸ’‘ JS 기반 ν”„λ‘œμ νŠΈμ—λŠ” μ›¬λ§Œν•΄μ„œλŠ” package.json 파일이 μžˆλ‹€. ν‰μ†Œμ—” κ·Έμ € ν”„λ‘œμ νŠΈμ—μ„œ μ‚¬μš©λ˜μ—ˆλ˜ μ¨λ“œνŒŒν‹° 라이브러리λͺ…μ΄λž‘ 버전 정도 기재된 κ²ƒμœΌλ‘œλ§Œ μ•Œλ‹€κ°€ 점점 install ν•˜λŠ” λ°©μ‹λ§ˆλ‹€ λ‹€λ₯Έ μ˜΅μ…˜μœΌλ‘œ μ„€μΉ˜ν•˜λŠ”κ²Œ λ‚΄ λ¨Έλ¦¬λ‘œλŠ” 잘 정리가 μ•ˆλ˜μ„œ 이참에 ν•œ 번 μ •λ¦¬ν•œλ‹€!

μ™œ package.json이 ν•„μš”ν• κΉŒ?

μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ‘œμ„œ ν”νžˆλ“€ 많이 μ‚¬μš©ν•˜λŠ” μžλ°”μ™€ λ”λΆˆμ–΄ 많이 μ“°μ΄λŠ” μ΄μœ λ‘œλŠ” μ˜€ν”ˆ μ†ŒμŠ€ μƒνƒœκ³„κ°€ κ·Έ μ΄μœ κ°€ 될 것이닀. 예λ₯Ό λ“€μ–΄ μ„œλ²„μ—μ„œ 내렀받은 DateTime 값을 화면에 ν‘œμ‹œν•  λ•Œ day.js 라이브러리 κ΄€λ ¨ λ©”μ„œλ“œκ°€ μ—†λ‹€λ©΄ λ³„λ„μ˜ μ»€μŠ€ν…€ 훅이 ν•„μš”ν•  것이닀. μ΄λŠ” 그럴수 μžˆλ‹€ μΉ˜μ§€λ§Œ react-router-dom, react-redux λ“± ν”„λ‘œμ νŠΈμ— κ΄€ν•΄μ„œ 쀑좕이 λ˜λŠ” μ¨λ“œνŒŒν‹° λΌμ΄λΈŒλŸ¬λ¦¬λŠ” μ»€μŠ€ν…€ ν›…μœΌλ‘œλŠ” λŒ€μ²΄ν•˜κΈ°κ°€ 사싀상 νž˜λ“€λ‹€.

package.json νŒŒμΌμ€ μ‰½κ²Œ 말해 우리의 μžλ°”μŠ€ν¬λ¦½νŠΈ ν”„λ‘œμ νŠΈλ₯Ό npm μ €μž₯μ†Œμ™€ μƒν˜Έ μž‘μš©ν•  수 μžˆλ„λ‘ λ§Œλ“€μ–΄μ£ΌλŠ” μ€‘μš”ν•œ μ—°κ²° 고리이닀.
package.json νŒŒμΌμ„ 톡해 npm νŒ¨ν‚€μ§€ μ €μž₯μ†Œλ‘œλΆ€ν„° μ–΄λ–€ νŒ¨ν‚€μ§€λ₯Ό λ‚΄λ €λ°›μ•„ μ„€μΉ˜ν•΄μ•Ό ν•˜λŠ”μ§€, λ˜ν•œ 우리의 ν”„λ‘œμ νŠΈλ₯Ό λ‹€λ₯Έ ν”„λ‘œμ νŠΈμ—μ„œ μ‚¬μš©ν•  수 μžˆλ„λ‘ μ–΄λ–»κ²Œ npm νŒ¨ν‚€μ§€ μ €μž₯μ†Œμ— μ˜¬λ¦΄κ²ƒμΈμ§€λ₯Ό μ„€μ •ν•  수 μžˆλ‹€.

scripts

package.json 파일의 scripts ν•„λ“œλŠ” ν”„λ‘œμ νŠΈμ—μ„œ λΉˆλ²ˆν•˜κ²Œ μˆ˜ν–‰ν•΄μ•Ό ν•˜λŠ” μž‘μ—…μ„ 슀크립트둜 λ“±λ‘ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λœλ‹€. ν„°λ―Έλ„μ—μ„œ ν”νžˆ npm run λͺ…λ Ήμ–΄λ‘œ μ‹€ν–‰ν•˜λŠ” μŠ€ν¬λ¦½νŠΈλŠ” λͺ¨λ‘ 여기에 μ •μ˜λ˜μ–΄ μžˆλ‹€κ³  보면 λœλ‹€. (예, npm run dev, npm run test, npm run storybook, …)

{
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint"
  }
}

dependencies

package.json νŒŒμΌμ—μ„œ κ°€μž₯ μΉœμˆ™ν•œ ν•„λ“œλ₯Ό λ½‘μœΌλΌλ©΄ μ˜μ‘΄μ„± λͺ…μ‹œλ₯Ό μœ„ν•œ dependencies 일 것이닀. μ’€ 더 μ—„λ°€ν•œ μ–˜κΈ°λ₯Ό ν•˜λ©΄ ν•΄λ‹Ή ν”„λ‘œμ νŠΈκ°€ μ‹€ν–‰λ˜κΈ° μœ„ν•΄μ„œ λ°˜λ“œμ‹œ ν•„μš”ν•œ νŒ¨ν‚€μ§€λ₯Ό μ˜λ―Έν•œλ‹€.

μš°λ¦¬κ°€ νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•˜κΈ° μœ„ν•΄μ„œ ν„°λ―Έλ„μ—μ„œ npm install <νŒ¨ν‚€μ§€>@<버전> λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜λ©΄ package.json 파일의 dependencies ν•­λͺ©μ— μžλ™μœΌλ‘œ 반영이 λ˜λŠ”λ°, κ·Έλž˜μ„œ κ°œλ°œμžκ°€ 직접 dependencies ν•­λͺ©μ„ μˆ˜μ •ν•΄μ•Ό ν•  일은 ν”μΉ˜ μ•ŠμœΌλ©°, μ˜€νƒ€ κ°€λŠ₯성도 μžˆκΈ°μ— 가급적 직접 μˆ˜μ •μ€ ν”Όν•˜λŠ”κ²Œ μ’‹λ‹€.

{
  "dependencies": {
    "@tanstack/react-query": "^4.35.0",
    "@types/react": "^18.2.21",
    "@types/react-dom": "^18.2.7",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "react-hook-form": "^7.46.1",
    "react-router-dom": "^6.15.0",
    "zod": "3.22.2"
  }
}

devDependencies

package.json 파일의 devDependencies ν•„λ“œλŠ” μ†Œμœ„ 개발 μ˜μ‘΄μ„±, 즉 ν…ŒμŠ€νŠΈ μž‘μ„±/μ‹€ν–‰μ΄λ‚˜ ν”„λ‘œμ νŠΈ λΉŒλ“œ μ‹œμ—λ§Œ ν•„μš”ν•œ νŒ¨ν‚€μ§€λ₯Ό λͺ…μ‹œν•˜κΈ° μœ„ν•΄μ„œ μ‚¬μš©λœλ‹€.

개발 μ˜μ‘΄μ„±μœΌλ‘œ νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•  λ•ŒλŠ” β€”save-dev λ˜λŠ” -D μ˜΅μ…˜μ„ μ€˜μ„œ npm install λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜λ©΄ λœλ‹€.

{
  "devDependencies": {
    "@testing-library/jest-dom": "^5.17.0",
    "@testing-library/react": "^13.4.0",
    "@testing-library/user-event": "^13.5.0",
    "eslint": "^8.48.0",
    "jest": "^29.6.4",
    "prettier": "^3.0.1",
    "typescript": "^5.2.2"
  }
}

πŸ₯•Β νŠΉμ • νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•  λ•Œ


νŠΉμ • νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•  λ•ŒλŠ” 크게 두 κ°€μ§€ μ˜΅μ…˜μœΌλ‘œ κ΅¬λΆ„λœλ‹€.

ν•˜λ‚˜λŠ” ν”„λ‘œμ νŠΈλ₯Ό ꡬ동할 λ•Œ ν•„μš”ν•œ dependencies(μ‹€μ œ μ½”λ“œμ—λ„ ν¬ν•¨λ˜λ©° μ•± ꡬ동을 μœ„ν•΄ ν•„μš”ν•œ μ˜μ‘΄μ„± νŒŒμΌλ“€) λͺ©λ‘μ— 좔가될 $ npm install (ν”„λ‘œμ νŠΈλͺ…) 으둜 ν”„λ‘œμ νŠΈλ₯Ό μ„€μΉ˜ν•˜λŠ” μ˜΅μ…˜μ΄κ³ , λ‹€λ₯Έ ν•˜λ‚˜λŠ” 개발 λ‹¨κ³„μ—μ„œλ§Œ ν•„μš”ν•œ devDependencies(μ‹€μ œ μ½”λ“œμ— ν¬ν•¨λ˜μ§€ μ•ŠμœΌλ©° 개발 λ‹¨κ³„μ—λ§Œ ν•„μš”ν•œ μ˜μ‘΄μ„± νŒŒμΌλ“€) λͺ©λ‘μ— 좔가될 $ npm install -D (ν”„λ‘œμ νŠΈλͺ…) μ˜΅μ…˜μ΄λ‹€.

  • -D 와 같은 μ ‘λ―Έμ–΄λ₯Ό β€œν”Œλž˜κ·Έβ€λΌκ³  λΆ€λ₯΄λŠ”λ°, 주둜 μ‚¬μš©λ˜λŠ” ν”Œλž˜κ·ΈλŠ” λ‹€μŒκ³Ό κ°™λ‹€.
    ν”Œλž˜κ·Ένš¨κ³Ό
    -PνŒ¨ν‚€μ§€ μ„€μΉ˜ & dependencies μΆ”κ°€
    β€”save-prodνŒ¨ν‚€μ§€ μ„€μΉ˜ & dependencies μΆ”κ°€
    -DνŒ¨ν‚€μ§€ μ„€μΉ˜ & devDependencies μΆ”κ°€
    β€”save-devνŒ¨ν‚€μ§€ μ„€μΉ˜ & devDependencies μΆ”κ°€
    -gνŒ¨ν‚€μ§€λ₯Ό ν”„λ‘œμ νŠΈκ°€ μ•„λ‹Œ μ‹œμŠ€ν…œμ˜ node_modules 폴더에 μΆ”κ°€

private

package.json 파일의 private ν•„λ“œλŠ” ν”„λ‘œμ νŠΈκ°€ npm νŒ¨ν‚€μ§€ μ €μž₯μ†Œλ‘œ λ°œν–‰(publish)해도 λ˜λŠ”μ§€ μ—¬λΆ€λ₯Ό μ§€μ •ν•˜κΈ° μœ„ν•΄μ„œ μ‚¬μš©λœλ‹€. 기본값은 false이기 λ•Œλ¬Έμ— λ”°λ‘œ λͺ…μ‹œν•΄μ£Όμ§€ μ•ŠμœΌλ©΄ ν•΄λ‹Ή ν”„λ‘œμ νŠΈκ°€ μ‹€μˆ˜λ‘œ npm νŒ¨ν‚€μ§€ μ €μž₯μ†Œλ‘œ μ—…λ‘œλ“œλ˜λŠ” 사고가 λ°œμƒν•  수 μžˆκΈ°μ— npm νŒ¨ν‚€μ§€ μ €μž₯μ†Œλ‘œ 올리면 μ•ˆ λ˜λŠ” ν”„λ‘œμ νŠΈμ—μ„œλŠ” private ν•„λ“œμ˜ 값을 λ°˜λ“œμ‹œ true둜 μ„€μ •ν•˜λŠ” 것이 λ³΄μ•ˆ μΈ‘λ©΄μ—μ„œ ꢌμž₯λœλ‹€.

{
	"private": true
}

homepage & repository

package.json 파일의 homepage μ˜΅μ…˜μ—λŠ” ν•΄λ‹Ή ν”„λ‘œμ νŠΈμ˜ ν™ˆνŽ˜μ΄μ§€λ‚˜ λ¬Έμ„œ νŽ˜μ΄μ§€μ˜ URL을 μ„€μ •ν•  수 μžˆλ‹€. 그러면 ν„°λ―Έλ„μ—μ„œ npm docs λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜μ—¬ κ°„νŽΈν•˜κ²Œ ν•΄λ‹Ή URL을 μ—΄μ–΄λ³Ό 수 μžˆλ‹€.

λ°˜λ©΄μ— package.json 파일의 repository μ˜΅μ…˜μ—λŠ” ν•΄λ‹Ή ν”„λ‘œμ νŠΈμ˜ μ½”λ“œ μ €μž₯μ†Œμ˜ URL을 μ„€μ •ν•  수 μžˆλ‹€. 그러면 ν„°λ―Έλ„μ—μ„œ npm repo λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜μ—¬ κ°„νŽΈν•˜κ²Œ ν•΄λ‹Ή URL을 μ—΄μ–΄λ³Ό 수 μžˆλ‹€.

이 λ‘κ°œμ˜ μ˜΅μ…˜μ€ 특히 npm νŒ¨ν‚€μ§€ μ €μž₯μ†Œμ— ν”„λ‘œμ νŠΈλ₯Ό λ°œν–‰ν•  λ•Œ μƒλ‹Ήνžˆ μ€‘μš”ν•œλ°, npm μ›Ήμ‚¬μ΄νŠΈμ—μ„œ νŒ¨ν‚€μ§€ 상세 νŽ˜μ΄μ§€μ— λ“€μ–΄κ°€λ©΄ homepage와 repository ν•­λͺ©μ— 이 두 개의 URL이 링크되기 λ•Œλ¬Έμ΄λ‹€. μ‚¬μš©μžλ“€μ΄ μ’€ 더 μ•ˆμ‹¬ν•˜κ³  미리 νŒ¨ν‚€μ§€μ— λŒ€ν•œ 정보λ₯Ό 확인 후에 μ„€μΉ˜ν•  수 μžˆλ„λ‘ 돕기 μœ„ν•¨μ΄λ‹€.

{
  "homepage": "https://www.algodale.com",
  "repository": "github:DaleSeo/AlgoDale"
}

license

package.json 파일의 license ν•„λ“œλ₯Ό ν†΅ν•΄μ„œλŠ” ν•΄λ‹Ή ν”„λ‘œμ νŠΈμ˜ λΌμ΄μ„ μŠ€λ₯Ό ν‘œμ‹œν•  수 μžˆλ‹€. 아무리 쒋은 νŒ¨ν‚€μ§€λΌλ„ λΌμ΄μ„ μŠ€κ°€ λͺ…μ‹œλ˜μ–΄ μžˆμ§€ μ•ŠμœΌλ©΄ μ“°κΈ°κ°€ κΊΌλ €μ§€κΈ° λ•Œλ¬Έμ—, npm에 λ°œν–‰ν•  νŒ¨ν‚€μ§€λΌλ©΄ λ°˜λ“œμ‹œ λͺ…μ‹œν•˜λŠ” 것이 μ’‹λ‹€.

{
	"license": "MIT"
}

πŸ”«Β κ²°λ‘ 


사싀 ν”Œλž˜κ·Έ 없이 npm install λ§Œμ„ μ‚¬μš©ν•΄λ„ λ™μž‘μ€ ν•˜μ§€λ§Œ, ν”Œλž˜κ·Έλ₯Ό μ‚¬μš©ν•΄ dependencies 와 devDependencies 둜 μ˜μ‘΄μ„± λͺ©λ‘μ„ κ΅¬λΆ„ν•˜λ©΄ β€œμ΄κ±΄ 개발용, 이건 μ‹€μ œ μ„œλΉ„μŠ€μš©β€ 으둜 κ΅¬λΆ„ν•˜κΈ° μ‰¬μ›Œμ§„λ‹€λŠ” λ©΄μ—μ„œ κ°œλ°œμžλ“€μ—κ²Œ ν•„μš”ν•œ κΈ°λŠ₯이라고 λ³Ό 수 μžˆκ² λ‹€ !

profile
노원거인

0개의 λŒ“κΈ€