Package.json

Package.json

  • npm init λͺ…령을 μž…λ ₯ν•˜κ³ , μ˜΅μ…˜μ„ μΆ”κ°€ν•˜λ©΄ package.json 파일이 μƒμ„±λ©λ‹ˆλ‹€.

// package.json μ˜ˆμ‹œ
{{
  "name": "npm_example",
  "version": "1.0.0",
  "description": "interview question",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [
    "interview",
    "Q"
  ],
  "author": "younglan",
  "license": "ISC"
}
  • νŒ¨ν‚€μ§€ 버전 λ³€ν™”λ₯Ό κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ package.json이 μ‚¬μš©(의쑴)ν•˜λŠ” νŒ¨ν‚€μ§€λ“€μ˜ 버전을 dependencies, devDependencies (+ peer Dependencies)둜 κΈ°λ‘ν•©λ‹ˆλ‹€.

    • npm install을 ν•˜λ©΄, node_module 디렉토리에 νŒ¨ν‚€μ§€ μ„€μΉ˜λ₯Ό 함과 λ™μ‹œμ— package.json도 μ—…λ°μ΄νŠΈλ©λ‹ˆλ‹€.

    • β€”save μ˜΅μ…˜μ˜ 경우, dependencies, β€”save-dev 의 경우, devDependencies에 등둝이 λ©λ‹ˆλ‹€.

    • λ”°λΌμ„œ, μ‹€μ œ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ 배포 μ‹œ ν•„μš”ν•œ 것듀은 β€”save , 배포할 λ•Œ ν•„μš”ν•˜μ§€ μ•Šμ€ Mocha, Jest와 같은 ν…ŒμŠ€νŠΈ 도ꡬ, webpack, babel 등은 β€”save-dev 둜 μ„€μΉ˜ν•©λ‹ˆλ‹€.

Package-lock.json

  • npm install λͺ…λ Ή μ‹€ν–‰ μ‹œ, package.json을 톡해 node_modules 폴더λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

  • package.json에 λͺ…μ‹œλœ μ˜μ‘΄μ„± νŒ¨ν‚€μ§€λ“€μ„ 폴더 μ•ˆμ— μ„€μΉ˜ν•˜λ©°, μƒμ„±λœ node_modules ν΄λ”μ˜ 정보 λ₯Ό package-lock.json 파일 μ•ˆμ— λ‹΄μŠ΅λ‹ˆλ‹€.

*** νŒ¨ν‚€μ§€λ“€μ€ κ³„μ†ν•΄μ„œ 버전을 κ°±μ‹ ν•˜κ³  있기 λ•Œλ¬Έμ— λ˜‘κ°™μ€ 쑰건으둜 μ„€μΉ˜ν•˜κΈ° νž˜λ“€κ³ , 같은 λ²„μ „μ˜ νŒ¨ν‚€μ§€λΌλ„ μ˜μ‘΄ν•˜λŠ” νŒ¨ν‚€μ§€μ—λŠ” λ‹€λ₯Έ 버전듀이 μ‘΄μž¬ν•  수 μžˆλ‹€.

// package-lock.json μ˜ˆμ‹œ
"name": "gatsby-starter-hello-world",
  "version": "0.1.0",
  "lockfileVersion": 1,
  "requires": true,
  "dependencies": {
    "@babel/code-frame": {
      "version": "7.8.3",
      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
      "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
      "requires": {
        "@babel/highlight": "^7.8.3"
      }

β‡’ package-lock.json은 node_modules 폴더(트리)λ₯Ό μ„€λͺ…ν•˜κ³ , [μŠ€λƒ…μƒ·](https://ko.wikipedia.org/wiki/%EC%8A%A4%EB%83%85%EC%83%B7_(%EA%B8%B0%EC%96%B5_%EC%9E%A5%EC%B9%98))을 μ €μž₯ν•˜λŠ” λ°©μ‹μœΌλ‘œ package.json이 가지고 μžˆλŠ” 약점을 λ³΄μ™„ν•©λ‹ˆλ‹€.

  • package-lock.json 이 μ‘΄μž¬ν•˜λ©΄, npm install μ‹œ package.json이 가지고 μžˆλŠ” dependenciesλ₯Ό λ‹€μ‹œ κ³„μ‚°ν•˜μ§€ μ•Šμ•„λ„, package-lock.json 에 λͺ…μ‹œλœ dependency packageλ₯Ό 톡해 node_modulesλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

  • ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λŠ” λͺ¨λ“  κ°œλ°œμžκ°€ 같은 node_modulesλ₯Ό 가지고 μž‘μ—…ν•˜κΈ° μœ„ν•΄ ν•„μˆ˜λ‘œ package-lock.json을 ν¬ν•¨μ‹œμΌœμ•Ό ν•©λ‹ˆλ‹€.

μš”μ•½

  • package-lock.json은 node_modulesλ‚˜ package.json이 μƒμ„±λ˜κ±°λ‚˜ μˆ˜μ •λ  λ•Œ μžλ™μ μœΌλ‘œ λ§Œλ“€μ–΄μ§€λ©°, dependency μ—…λ°μ΄νŠΈμ— 관계없이 λ™μΌν•œ 트리λ₯Ό μƒμ„±ν•˜μ—¬ κ°œλ°œμžλ“€μ΄ 같은 dependency(μ˜μ‘΄μ„±)λ₯Ό μ„€μΉ˜ν•  수 μžˆλ„λ‘ 보μž₯ν•΄μ€λ‹ˆλ‹€.

  • νŒ€ ν”„λ‘œμ νŠΈλ₯Ό 진행할 λ•Œ λ°°ν¬λ‚˜ 지속적인 톡합이 이뀄져야 ν•˜λŠ” μƒν™©μ—μ„œ package-lock.json은 λ‹¨μˆœνžˆ λΆˆν•„μš”ν•œ 파일이 μ•„λ‹ˆλΌ, κ°œλ°œμžλ“€μ΄ 톡일성 μžˆλŠ” ν™˜κ²½μ—μ„œ κ°œλ°œν•  수 μžˆλ„λ‘ ν•΄μ£ΌλŠ” μΌμ’…μ˜ 연결고리라고 ν•  수 μžˆκ² μŠ΅λ‹ˆλ‹€.

β€» Reference

처음 μ‹œμž‘ν•˜λŠ” Node.js 개발 - 2 - npm

(NodeJS) package.json

미처 μ•Œμ§€ λͺ»ν–ˆλ˜ package-lock.json

Last updated