๐ฅ ํธ๋ฝํธ๋ฝํ์ง ์์ ํ๋ก์ ํธ ์ค์น
์ ์ฌํ๊ณ ๋์ ์ด๋์ ๋ ํ์ฌ ์ํ์ ์ ์ํ๋ ์ค, ๋๋์ด ์ฐ๋ฆฌ ํ ํ๋ก์ ํธ ์ค์น๋ฅผ ํ๋ ์์๊ฐ ์ฐพ์์๋ค. ์ด์ ๊น์ง yarn์ด๋ผ๋ ํจํค์ง ๋งค๋์ ์์ฃผ๋ก ์ฌ์ฉํ๋ค ์ค๋๋ง์ npm์ผ๋ก ์ค์นํ๋ ค๋๋ฐ ์ ์ ๋ถ๊ป์ 'npm i ๋์ npm ci๋ก ์ค์น๋ฅผ ์งํํด์ฃผ์ธ์' ๋ผ๊ณ ์์ฒญํด์ฃผ์ จ๋ค. ๊ทธ๋์ npm i๋ง ์๊ณ ์๋ ๋ด๊ฒ ๋ ๋ค๋ฅธ ์ค์น ๋ฐฉ๋ฒ์ด ์๋ค๋๊ฒ ์ ๊ธฐํ๊ธฐ๋ ํ๊ณ , ๊ตฌ์ฒด์ ์ผ๋ก ์ด๋ป๊ฒ ๋ค๋ฅธ์ง ํ์ธํด๋ณด๊ธฐ๋ก ํ๋ค.
โก๏ธ npm ci?
์ฐ์ npm ci์ 'ci' ๋ ๋ค์ ์ฉ์ด์ ์ค์๋ง์ด๋ค.
ci : clean install
๊ทธ๋ฅ ์ค์นํ๋ ๊ฒ๋ ์๋๊ณ ํด๋ฆฐํ๊ฒ ์ค์นํ๋ค๋ ๊ฒ์ ๋ฌด์จ ๋ป์ผ๊น? ์ด ๋ป์ ์ดํดํ๋ ค๋ฉด ๋จผ์ package.json๊ณผ package-lock.json์ ๋ํด ์ดํดํ ํ์๊ฐ ์๋ค.
์ฐ์ package.json์ ํ๋ก์ ํธ์ ์ ๋ณด๋ฅผ ์ ์ํ๊ณ , ์์กดํ๋ ํจํค์ง ๋ฒ์ ์ ๋ณด๋ฅผ ๋ช ์ํ๋ ํ์ผ์ด๋ค.
์ฆ, ๋ด๊ฐ ์ค์นํ ํจํค์ง๋ช ๊ณผ ์ค์นํ ๋์ ๋ฒ์ ์ ์ ์ด๋์ ํ์ผ์ด๋ค. ์ด ํ์ผ ๋๋ถ์ Github์์ ํ๋ก์ ํธ๋ฅผ ๋ฐ์ ์ค์น๋ ํจํค์ง๋ค์ ๋ถ๋ฌ์ฌ ์ ์๋ ๊ฒ์ด๋ค. ํ์ง๋ง package.json์ ๋ฒ์ ์ ๋ณด๋ฅผ ์ ์ฅํ ๋ ๋ช ํํ ๋ฒ์ ๋์ version range๋ก ํ๊ธฐํ๋ค.
๐ค version range?
๐ถ๐ป : "๋ด๊ฐ ์ฌ์ฉํ ํจํค์ง์ ๋ฒ์ ์ 3.15.1๋ฒ์ ์ด์ผ" ๋ผ๊ณ ๋งํ๋ ๋์
๐ถ๐ป : "๋๋ 3.15.1๋ฒ์ ์ด์, ๊ทธ๋ฆฌ๊ณ 3.16.0 ๋ฏธ๋ง์ ํจํค์ง๋ฅผ ์ฌ์ฉํ ๊ฑฐ์ผ" ๋ผ๊ณ ๋งํ๋ ๋ฐฉ์์ด๋ค.
๋ฌผ๋ก 3.15.1์ฒ๋ผ ๋ฑ ์ ํด์ ๋ช ์ํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค.
// version range ์์
// ํธ๋ (tilde)
"devDependencies": {
"@vue/cli-service": "~4.3.0",
},
// 4.3.0 ์ด์ 4.4.0 ๋ฏธ๋ง
// 4.4.0 ๋ฏธ๋ง์ ํจ์น ๋ ๋ฒจ ๋ณ๊ฒฝ์ ํ์ฉํ๊ฒ ๋ค๋ ์๋ฏธ
// ์บ๋ฟ(caret)
"dependencies": {
"vue": "^2.6.11"
}
// 2.6.11 ์ด์ 3.0.0 ๋ฏธ๋ง
// 3.0.0 ๋ฏธ๋ง์ ๋ง์ด๋, ํจ์น ๋ณ๊ฒฝ์ ํ์ฉํ๊ฒ ๋ค๋ ์๋ฏธ
์ด๋ ๊ฒ ๋ช ํํ ๋ฒ์ ์ด ์๋ ๋ฒ์๋ก์จ ๋ฒ์ ์ ๋ช ์ํ๊ฒ ๋๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
๐ถ๐ป : ํ๋ก์ ํธ ๋ฐ์๋๋ฐ ์ ์๋์ด ์๋์ง??
๐ง๐ป : ์ฅ ์ง์ง?? ๋ ๋ฒ์ ์ด ๋ช์ธ๋ฐ?
๐ถ๐ป : ๋ 3.15.2 !!
๐ง๐ป : ์ด.. ๋๋ 3.15.1์ธ๋ฐ...? ์ ์ด๋ ๊ฒ ์ค์น๋๊ฑฐ์ง?
๋ฌผ๋ก ์ด๋ฐ ๋จ์ ๋ง ์๋ ๊ฒ์ ์๋๋ค. package.json์ ํจํค์ง ๋ฒ์ ๋ช
์ ์ ํํ ๋ช
์ํ๊ฒ ๋๋ค๋ฉด,
ํ๋ก์ ํธ์์ ์ฌ์ฉํ๊ณ ์๋ ํจํค์ง์ ์ค์ํ ๋ฒ๊ทธ ์์ ์ด ์ด๋ฃจ์ด์ง ๋ ๋ง๋ค ํ๋ก์ ํธ์ package.json์ ์ ํ์๋ ๋ฒ์ ๋
์์ ์ ํด์ผํ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ํฌ๊ณ ์์ ํจํค์ง๋ค์ ๋ฆด๋ฆฌ์ฆ์ ๋ํด ํญ์ ์ถ์ ํ๊ณ ์์ ํด์ผํ๋ ์์ฒญ๋ ๊ท์ฐฎ์์
version range๋ก ๋ช
์ํจ์ผ๋ก์จ, ์ด๋ฅผ ํด๊ฒฐํด์ค๋ค๋ ์ฅ์ ์ด ์๋ค.
ํ์ง๋ง ์ฌ๋ฌ ์ฌ๋์ด ํฌ์ ๋๊ณ ๋ชจ๋๊ฐ ๋์ผํ ํ๊ฒฝ์์ ์งํํด์ผํ๋ ํ๋ก์ ํธ๋ผ๋ฉด ์ด์จ๋ ๊ฐ์ ๋ฒ์ ์ผ๋ก ์ค์นํ ํ์๊ฐ ์๋ค. ์ด๋ฅผ ์ํด package-lock.json์ด ํ์ํด์ง ๊ฒ์ด๋ค.
package.json ์ ์ฝ์ด ์์กด์ฑ ๋ชฉ๋ก์ ๋ง๋ค๊ณ
package-lock.json ์ ํตํด ์ค์นํ ์์กด์ฑ์ ๋ฒ์ ์ ์๋ ค์ค๋ค.
๋ช ํํ ํจํค์ง์ ๋ฒ์ ์ด ์ ํ์๋ package-lock.json์ ํ์ฉํด ์ค์นํ ์ ์๋ ๊ฒ์ด ๋๋์ด ์ฐ๋ฆฌ๊ฐ ์์๋ณด๊ณ ์ ํ๋ npm ci์ธ ๊ฒ์ด๋ค.
npm ci๋ ๋ค์๊ณผ ๊ฐ์ ํน์ง์ด ์๋ค.
- package-lock.json ์ด ๋ฌด์กฐ๊ฑด ์กด์ฌํด์ผ๋ง ํ๊ณ , ๋ง์ฝ ์์ผ๋ฉด ์๋ฌ๋ฅผ ๋ธ๋ค.
- package-lock.json ํ์ผ์ ๊ธฐ๋ฐ์ผ๋ก ์์กด์ฑ์ ์ค์นํ๊ณ , package.json ์ ๋ฒ์ ๋งค์นญ ๋ฐธ๋ฆฌ๋ฐ์ด์
์ฉ๋๋ก ์ฌ์ฉํ๋ค.
์ฆ, package-lock.json ๊ณผ package.json ์ฌ์ด์ ๋ฒ์ ์ด ๋งค์นญ์ด ์๋๋ฉด ์๋ฌ๋ฅผ ๋ธ๋ค. - npm ci ์คํํ๋ฉด ๋จผ์ node_modules ์ญ์ ํ ํ, ์์กด์ฑ์ ํ๋ฒ์ ์ค์นํ๋ค.
๊ฐ๋จํ ์ ๋ฆฌํ์๋ฉด node_modules๊ฐ ์๋ค๋ฉด ์ด๋ฅผ ์ญ์ ํ ํ ์ฌ์ค์น๋ฅผ ํ๋ฉฐ,
package.json์ ์ ํ์๋ ๋ฒ์ ๊ณผ package-lock.json์ ๋ฒ์ ์ ๋น๊ตํ ๋ค์ ๋งค์นญ๋๋ค๋ฉด
package-lock.json์ ๊ธฐ์ค์ผ๋ก ์ค์นํ๋ ๊ฒ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ๋์ด ๋ค๋ฅด๋ค๋ฉด ๋ฒ์ ์ ์
๋ฐ์ดํธํด์ ๋ฐ๋ ๊ฒ์ด ์๋ ์๋ฌ๋ฅผ ๋ด๋ณด๋ธ๋ค.
์ด๋ฅผ ํตํด ํ๋ก์ ํธ์ ์ฐธ์ฌํ๋ ๋ชจ๋ ์ธ์์ด ์์ ํ ๋์ผํ ๋ฒ์ ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์ํํ ์ ์๋ค.
์ฐธ๊ณ ๋ก yarn์๋ ์ด์ ๋น์ทํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
yarn install --frozen-lockfile
๐ซต๐ป ๊ฒฐ๋ก
ํ๋ก์ ํธ๋ ํผ์ ํ๋ ๊ฒ์ด ์๋๋ค. ํนํ ํ์ฌ์ ํ๋ก์ ํธ์ ์ฐธ์ฌํ๊ฑฐ๋ ํ์ผ๋ก์จ ์ฌ์ด๋ ํ๋ก์ ํธ์ ์ฐธ์ฌํ ๋ ๋ชจ๋๊ฐ ํ ์ฌ๋์ด ํ๋ก์ ํธ๋ฅผ ๋ง๋๋ ๊ฒ์ฒ๋ผ ๋์ผํ ํ๊ฒฝ์ ์ต๋ํ ๋ง์ถ ํ์๊ฐ ์๋ค. ํ๊ฒฝ์ ์ฐจ์ด๋ก ์ธํด ํ๋ก์ ํธ์ ์ง์ฅ์ด ๊ฐ๋ค๋ฉด ์ด๋ณด๋ค ์๊ฐ์ด ์๊น์ธ ์๋ ์์ ๊ฒ์ด๋ค. '์์์ด ๋ฐ์ด๋ค' ๋ผ๋ ๋ง์ด ์๋ฏ ์ด๋ฐ์ ์ด๋ฐ ์ธํ ์ ์กฐ๊ธ๋ง ์ ๊ฒฝ์ด๋ค๋ฉด ์์ผ๋ก์ ๊ฐ๋ฐ ๋ผ์ดํ์ ํ๋ณต๋ง์ด ๊น๋ค ๊ฒ์ด๋ค.
์ถ์ฒ
https://velog.io/@songyouhyun/Package.json%EA%B3%BC-Package-lock.json%EC%9D%98-%EC%B0%A8%EC%9D%B4
https://docs.npmjs.com/cli/v8/commands/npm-ci
'Programming > 11. etc' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
004_cdn ๐ (0) | 2022.04.16 |
---|---|
003_css์ ๋ค์ํ ์จ๊น์ฒ๋ฆฌ ๋ฐฉ๋ฒ (0) | 2022.04.11 |
002_์ธํฐ๋ท ๐ (0) | 2022.04.03 |
001_๋ธ๋ผ์ฐ์ ์ ์ ์ฅ์์ ๋ํด ์์๋ณด์ ๐ (0) | 2022.03.31 |
๋๊ธ