package-lock.json

Yeonnยท2024๋…„ 6์›” 2์ผ
0

CS ๊ณต๋ถ€

๋ชฉ๋ก ๋ณด๊ธฐ
13/13
post-thumbnail

๐Ÿ“ package.json
: npm install์˜ ๊ธฐ์ค€์ด ๋˜์–ด ์ค„ ํŒŒ์ผ, ๋Œ€๋žต์ ์ธ ์˜์กด์„ฑ์˜ ๋ฒ„์ „ ๊ด€๋ฆฌ
๐Ÿ“ package-lock.json
: package.json์„ ์„ค์น˜ํ•˜๋˜ ๋‚ ์˜ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์–ด ํ”„๋กœ์ ํŠธ์— ์„ค์น˜๋˜์–ด์•ผ ํ•˜๋Š” ์˜์กด์„ฑ์˜ ์ •ํ™•ํ•œ ๋ฒ„์ „ ๊ด€๋ฆฌ

โœ”๏ธ package.json์˜ ํ•œ๊ณ„

โ“ package.jsonํŒŒ์ผ์˜ ์˜์กด์„ฑ ์„ ์–ธ: version range( ํŠน์ • ๋ฒ„์ „์ด ์•„๋‹Œ ๋ฒ„์ „์˜ ๋ฒ”์œ„ )

  • SemVer(Major.Minor.Patch) ๋ฐฉ์‹์œผ๋กœ ๋ฒ„์ „์„ ๊ด€๋ฆฌ
  • version range๊ฐ€ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋™์ผํ•œ package.jsonํŒŒ์ผ๋กœ npm install์„ ์‹คํ–‰ํ•ด๋„ ๋‹ค๋ฅธ ์‹œ๊ธฐ์— ์„ค์น˜ํ•œ๋‹ค๋ฉด ๋‹ค๋ฅธ ๋ฒ„์ „์ด ์„ค์น˜๋  ์ˆ˜ ์žˆ๊ณ  ์ด๋Š” ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

โœ”๏ธ package-lock.json

โœจ package-lock.json: ์˜์กด์„ฑ ํŠธ๋ฆฌ์— ๋Œ€ํ•œ ์ •๋ณด, ์ฆ‰ ์ •ํ™•ํ•œ ๋ฒ„์ „ ์ •๋ณด๋ฅผ ๊ฐ€์ง
package-lock.json ํŒŒ์ผ์ด ์ž‘์„ฑ๋œ ์‹œ์ ์˜ ์˜์กด์„ฑ ํŠธ๋ฆฌ๊ฐ€ ๋‹ค์‹œ ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅ

์˜ˆ๋ฅผ ๋“ค์–ด 6์›” 3์ผ์— 1.2.0 ๋ฒ„์ „์˜ ํŒจํ‚ค์ง€๊ฐ€ ์„ค์น˜๋˜์—ˆ๋‹ค. 6์›” 19์ผ, ํ•ด๋‹น ํŒจํ‚ค์ง€๊ฐ€ 1.3.0์œผ๋กœ ๋ฒ„์ „์ด ์—…๋ฐ์ดํŠธ ๋˜์—ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋งŒ์•ฝ package.json ํŒŒ์ผ๋งŒ ์žˆ๋‹ค๋ฉด ๋ช…์‹œ๋œ version range์— ๋”ฐ๋ผ ๋ฒ”์œ„๋กœ ๋ฒ„์ „์ด ์ง€์ •๋˜๊ธฐ ๋•Œ๋ฌธ์— 6์›” 19์ผ ์ดํ›„ npm install ์‹œ์— ๊ธฐ์กด์˜ ๋ฒ„์ „๊ณผ ๋‹ค๋ฅธ ๋ฒ„์ „์ด ์„ค์น˜๋  ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ ํŒจํ‚ค์ง€๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์•„ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
ํ•˜์ง€๋งŒ package-lock.json์€ ํŒŒ์ผ์ด ์ž‘์„ฑ๋œ ์‹œ์ ์˜ ์˜์กด์„ฑ ํŠธ๋ฆฌ์— ๋Œ€ํ•œ ์ •๋ณด, ์ฆ‰ ์ •ํ™•ํ•œ ๋ฒ„์ „ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ์šด ์—…๋ฐ์ดํŠธ๊ฐ€ ์ƒ๊ธด ์ดํ›„์— npm install์„ ํ•˜๋”๋ผ๋„ ๊ธฐ์กด๊ณผ ๋™์ผํ•œ ๋ฒ„์ „์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

โ“ package.json & package-lock.json

๊ทธ๋ ‡๋‹ค๋ฉด, ์™œ package.json์— ์ง์ ‘ ํŒจํ‚ค์ง€ ๋ฒ„์ „๋ช…์„ ์ •ํ™•ํ•˜๊ฒŒ ๋ช…์‹œํ•˜์ง€ ์•Š์„๊นŒ?
ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ํŒจํ‚ค์ง€์˜ '์ค‘์š”ํ•œ ๋ฒ„์ „ ์ˆ˜์ •'์ด ์ด๋ฃจ์–ด ์งˆ ๋•Œ๋งˆ๋‹ค ํ”„๋กœ์ ํŠธ์˜ package.json์— ์ ํ˜€์žˆ๋Š” ๋ฒ„์ „๋„ ์ˆ˜์ •ํ•ด์•ผ ํ•œ๋‹ค.
์ด๋Š” ๋ชจ๋“  ํฌ๊ณ  ์ž‘์€ ํŒจํ‚ค์ง€๋“ค์˜ ๋ฆด๋ฆฌ์ฆˆ์— ๋Œ€ํ•ด ํ•ญ์ƒ ์ถ”์ ํ•˜๊ณ  ์ˆ˜์ •ํ•ด์•ผํ•˜๋Š” ์ˆ˜๊ณ ์Šค๋Ÿฌ์›€์„ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— package.json์—๋Š” ์ •ํ™•ํ•œ ๋ฒ„์ „์„ ๋ช…์‹œํ•˜์ง€ ์•Š๊ณ  version range๋ฅผ ๋ช…์‹œํ•จ์œผ๋กœ์จ ํ•ด๊ฒฐํ•œ๋‹ค.
๊ทธ ํ›„ version range๋กœ ์ธํ•ด npm install ์‹œ๊ธฐ ๋งˆ๋‹ค ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋Š” ๋ฒ„์ „์˜ ์ฐจ์ด๋ฅผ package-lock.jsonํŒŒ์ผ๋กœ ์˜์กด์„ฑ์˜ ์ •ํ™•ํ•œ ๋ฒ„์ „์„ ๊ด€๋ฆฌํ•˜์—ฌ ๋ฒ„์ „์˜ ์ฐจ์ด๋กœ ์ธํ•œ ์—๋Ÿฌ๋ฅผ ๋ฐฉ์ง€ํ•œ๋‹ค.

๐Ÿ’ก summary

  • package.json๊ณผ package-lock.json ์ €์žฅ์†Œ์— ๊ผญ ์ปค๋ฐ‹ํ•˜๊ธฐ
    - ํ”„๋กœ์ ํŠธ๋ฅผ ํ•จ๊ป˜ ์ง„ํ–‰ํ•˜๋Š” ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋“ค์ด ๋™์ผํ•œ ํ™˜๊ฒฝ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ
  • node_modules๋Š” ์œ„์˜ ๋‘ ํŒŒ์ผ์„ ์ปค๋ฐ‹ํ–ˆ์œผ๋ฏ€๋กœ ์ œ์™ธํ•  ์ˆ˜ ์žˆ๋‹ค( ์šฉ๋Ÿ‰ ๋ถ€๋ถ„์—์„œ ๋งค์šฐ ์œ ๋ฆฌ )
    - npm install์‹œ ํด๋”๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ์œ„ ๋‘ ํŒŒ์ผ์„ ํ†ตํ•ด ์˜์กด์„ฑ ํŒจํ‚ค์ง€๋“ค์ด ์ž๋™์œผ๋กœ ์„ค์น˜๋œ๋‹ค



โž• node_modules

  • npm์„ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์‹œ ์ƒ์„ฑ๋˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ
  • node_modules: package.json์— ์žˆ๋Š” ๋ชจ๋“ˆ๊ณผ ๊ทธ ๋ชจ๋“ˆ์ด ์˜์กดํ•˜๋Š” ๋ชจ๋“  ๋ชจ๋“ˆ์„ ํฌํ•จํ•œ๋‹ค.
    - package.json: ํ˜„ ํ”„๋กœ์ ํŠธ๊ฐ€ ์˜์กดํ•˜๊ณ  ์žˆ๋Š” ๋ชจ๋“ˆ๋“ค์— ๋Œ€ํ•œ ์ •๋ณด
  • node_modules๋Š” ์šฉ๋Ÿ‰์„ ๋งŽ์ด ์ฐจ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„์— ๋ฐฐํฌํ•  ๊ฒฝ์šฐ node_modules๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋ฐฐํฌํ•˜์—ฌ ํ•„์š”ํ•œ ํŒŒ์ผ๋งŒ ์„œ๋ฒ„์— ์ด๋™์‹œํ‚ค๊ณ , ์„œ๋ฒ„ ๋‚ด์—์„œ ํŒจํ‚ค์ง€๋“ค์„ package.json๊ณผ package-lock.json์„ ์ด์šฉํ•ด ์žฌ์„ช์น˜ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค. ( ์ธํ„ฐ๋„ท์„ ํ์‡„๋ง์œผ๋กœ ์ด์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์˜ˆ์™ธ )


โž• SemVer( semantic versioning )

  • Major
    - ์ด์ „ ๋ฒ„์ „๋ณด๋‹ค ํฐ ๊ธฐ๋Šฅ ํ–ฅ์ƒ์„ ํ•œ ๊ฒฝ์šฐ Major ๋ฒ„์ „์ด ์˜ฌ๋ผ๊ฐ„๋‹ค
    • ๊ธฐ๋Šฅ์ด ํฌ๊ฒŒ ๋ณ€๊ฒฝ๋˜์—ˆ์œผ๋ฏ€๋กœ, ์ด์ „ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜์ด ๋ถˆ๊ฐ€ํ•˜๋‹ค
  • Minor
    - ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋œ ๊ฒฝ์šฐ Minor ๋ฒ„์ „์ด ์˜ฌ๋ผ๊ฐ„๋‹ค
    • ํ•˜์œ„ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค
  • Patch
    - ๋ฒ„๊ทธ๊ฐ€ ์ˆ˜์ •๋œ ๊ฒฝ์šฐ Patch ๋ฒ„์ „์ด ์˜ฌ๋ผ๊ฐ„๋‹ค
    - ํ•˜์œ„ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค.


โž• version range

notationdescription
version๋ช…์‹œ๋œ version๊ณผ ์ผ์น˜
>version๋ช…์‹œ๋œ version๋ณด๋‹ค ๋†’์€ ๋ฒ„์ „
>=version๋ช…์‹œ๋œ version๊ณผ ๊ฐ™๊ฑฐ๋‚˜ ๋†’์€ ๋ฒ„์ „
<version๋ช…์‹œ๋œ version๋ณด๋‹ค ๋‚ฎ์€ ๋ฒ„์ „
<=version๋ช…์‹œ๋œ version๊ณผ ๊ฐ™๊ฑฐ๋‚˜ ๋‚ฎ์€ ๋ฒ„์ „
~version
( Tilt Range )
๋ช…์‹œ๋œ version๊ณผ ๊ทผ์‚ฌํ•œ ๋ฒ„์ „
ex) ~0.1.1: 0.1.1 <= version < 0.2.0
^version
( Caret Range )
๋ช…์‹œ๋œ version๊ณผ ํ˜ธํ™˜๋˜๋Š” ๋ฒ„์ „
ex) ^1.0.2: 1.0.2 โ‰ค version < 2.0.0

0๊ฐœ์˜ ๋Œ“๊ธ€