๐
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ํ์ผ๋ก ์์กด์ฑ์ ์ ํํ ๋ฒ์ ์ ๊ด๋ฆฌํ์ฌ ๋ฒ์ ์ ์ฐจ์ด๋ก ์ธํ ์๋ฌ๋ฅผ ๋ฐฉ์งํ๋ค.
summarypackage.json๊ณผ package-lock.json ์ ์ฅ์์ ๊ผญ ์ปค๋ฐํ๊ธฐnode_modules๋ ์์ ๋ ํ์ผ์ ์ปค๋ฐํ์ผ๋ฏ๋ก ์ ์ธํ ์ ์๋ค( ์ฉ๋ ๋ถ๋ถ์์ ๋งค์ฐ ์ ๋ฆฌ )npm install์ ํด๋๊ฐ ์์ฑ๋๊ณ ์ ๋ ํ์ผ์ ํตํด ์์กด์ฑ ํจํค์ง๋ค์ด ์๋์ผ๋ก ์ค์น๋๋คnode_modulesnpm์ ํตํด ํ๋ก์ ํธ ์์ฑ ์ ์์ฑ๋๋ ๋๋ ํ ๋ฆฌnode_modules: package.json์ ์๋ ๋ชจ๋๊ณผ ๊ทธ ๋ชจ๋์ด ์์กดํ๋ ๋ชจ๋ ๋ชจ๋์ ํฌํจํ๋ค.package.json: ํ ํ๋ก์ ํธ๊ฐ ์์กดํ๊ณ ์๋ ๋ชจ๋๋ค์ ๋ํ ์ ๋ณดnode_modules๋ ์ฉ๋์ ๋ง์ด ์ฐจ์งํ๊ธฐ ๋๋ฌธ์ ์๋ฒ์ ๋ฐฐํฌํ ๊ฒฝ์ฐ node_modules๋ฅผ ์ ์ธํ๊ณ ๋ฐฐํฌํ์ฌ ํ์ํ ํ์ผ๋ง ์๋ฒ์ ์ด๋์ํค๊ณ , ์๋ฒ ๋ด์์ ํจํค์ง๋ค์ package.json๊ณผ package-lock.json์ ์ด์ฉํด ์ฌ์ช์นํ์ฌ ์ฌ์ฉํ๋ค. ( ์ธํฐ๋ท์ ํ์๋ง์ผ๋ก ์ด์ฉํ๋ ๊ฒฝ์ฐ ์์ธ )SemVer( semantic versioning )
MajorMajor ๋ฒ์ ์ด ์ฌ๋ผ๊ฐ๋คMinorMinor ๋ฒ์ ์ด ์ฌ๋ผ๊ฐ๋คPatchPatch ๋ฒ์ ์ด ์ฌ๋ผ๊ฐ๋คversion range| notation | description |
|---|---|
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 |