NPM์ ์ฌ์ฉํ์ฌ ์ข ์์ฑ์ ์ค์นํ๋ ๊ฒ์ ์ฃผ์ ์ฌํญ์ ๋ชจ๋ฅด๋ฉด ๋ค์ ํผ๋์ค๋ฌ์ธ ์ ์์ต๋๋ค.
๋ถ์ธ ์ฑ๋ช ํ๊ตญ์ด ์ค๋ ฅ์ด ๋ถ์ ํ์ฌ ์ด ๊ธ์ด ๊ตฌ๊ธ ๋ฒ์ญ๊ธฐ๋ฅผ ์ฃผ๋ก ํ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ถ์ ํํ ๋ฌธ๋ฒ๊ณผ ์ดํ๊ฐ ์์์ ์์ต๋๋ค. ์ด ์ ์ํด ๋ถํ๋๋ฆฌ๋ฉฐ, ์ถํ์ ๋ค์ ๊ฒํ ํ์ฌ ์์ ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
NPM ์ ์ฅ์์์ ์ข
์์ฑ์ ์ค์นํ ์ ์๋ ๋ช
๋ น์ด๋ npm install๊ณผ npm ci ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
npm install (์ผ๋ฐ ๊ฐ๋ฐ)
์ด ๋ช ๋ น์ด๋ ๊ฐ๋ฐ์๊ฐ ๋ก์ปฌ ํ๊ฒฝ์์ ๊ฐ๋ฐํ๊ฑฐ๋ ์ข ์์ฑ์ ์ ๋ฐ์ดํธํ ๋ ์ฌ์ฉํฉ๋๋ค.
- ๊ธฐ๋ฅ:
package.jsonํ์ผ์ ์ฝ์ด ์ค์นํ ์ข ์์ฑ์ ํ์ธํฉ๋๋ค. ์ ํจํค์ง๋ฅผ ์ค์นํ๊ฑฐ๋ ๊ธฐ์กด ํจํค์ง๋ฅผ ์ง์ ๋ ๋ฒ์(์: ^1.2.3) ๋ด์ ์ต์ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค. - ์์ ์ฌํญ: ์ค์น ํ
package-lock.jsonํ์ผ์ ์ฃผ๊ธฐ์ ์ผ๋ก ์ ๋ฐ์ดํธํ์ฌ ํน์ ๋ฒ์ ์ ๋ฐ์ํฉ๋๋ค. - ์๋: ์ข ์์ฑ์ ํด๊ฒฐํ๊ณ ์ต์ ๋ฒ์ ์ ์ฐพ๊ธฐ ์ํด ๋คํธ์ํฌ ์์ฒญ์ ์ํํด์ผ ํ๋ฏ๋ก ์ผ๋ฐ์ ์ผ๋ก ์๋๊ฐ ๋๋ฆฝ๋๋ค.
npm ci (์๋ํ๋ ํ๊ฒฝ)
npm ci์ "ํด๋ฆฐ ์ค์น(Clean Install)"์ ์ฝ์์
๋๋ค. ์ด ๋ช
๋ น์ด๋ CI/CD ํ๊ฒฝ์์ ์์ธก ๊ฐ๋ฅํ๊ณ ์์ ์ ์ธ ์ข
์์ฑ ์ค์น๋ฅผ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
- ๊ธฐ๋ฅ:
package.jsonํ์ผ์ ๋ฌด์ํ๊ณpackage-lock.json(๋๋npm-shrinkwrap.json)์์ ์ง์ ์ข ์์ฑ์ ์ค์นํฉ๋๋ค. - ์๊ฒฉ์ฑ:
lockfile์ด ๋ฐ๋์ ์กด์ฌํด์ผ ํ๋ฉฐ,package.json๊ณผlockfile์ด ๋๊ธฐํ๋์ง ์์ ๊ฒฝ์ฐ ์ค๋ฅ๋ฅผ ๋ฐ์์ํต๋๋ค. - ํด๋ฆฐ ์ํ: ์ค์น ์์ ์ ์
node_modulesํด๋๋ฅผ ์๋์ผ๋ก ์ญ์ ํ์ฌ ์๋กญ๊ณ ์์ธก ๊ฐ๋ฅํ ์ค์น๋ฅผ ๋ณด์ฅํฉ๋๋ค. - ์๋: ๋ฒ์ ํ์ธ์ ๊ฑด๋๋ฐ๊ณ
lockfile์ ์ ๋ฐ์ดํธํ์ง ์์ผ๋ฏ๋ก ์ผ๋ฐ์ ์ผ๋กnpm install๋ณด๋ค ๋น ๋ฆ ๋๋ค.
๋๊ธฐํ ์ค๋ฅ
์ต๊ทผ CI/CD ํ์ดํ๋ผ์ธ์์ npm ci๋ฅผ ์คํํ๋ ค๊ณ ํ ๋ ๋ฐ์ํ ์ค๋ฅ์
๋๋ค.
"C:\Windows\system32\cmd.exe" /D /E:ON /V:OFF /S /C "CALL "D:\agent\_work\_temp\6d22faac-2828-45d6-9ee5-b47ff7afc488.cmd""
npm error code EUSAGE
npm error
npm error `npm ci` can only install packages when your package.json and package-lock.json or npm-shrinkwrap.json are in sync. Please update your lock file with `npm install` before continuing.
npm error
npm error Missing: @emnapi/core@1.9.2 from lock file
npm error Missing: @emnapi/runtime@1.9.2 from lock file
npm error Missing: chokidar@5.0.0 from lock file
npm error Missing: chokidar@5.0.0 from lock file
npm error Missing: @types/node@25.6.0 from lock file
npm error Missing: chokidar@5.0.0 from lock file
npm error Missing: @types/node@25.6.0 from lock file
npm error Missing: chokidar@5.0.0 from lock file
npm error
npm error Clean install a project
npm error
npm error Usage:
npm error npm ci
npm error
npm error Options:
npm error [--install-strategy <hoisted|nested|shallow|linked>] [--legacy-bundling]
npm error [--global-style] [--omit <dev|optional|peer> [--omit <dev|optional|peer> ...]]
npm error [--include <prod|dev|optional|peer> [--include <prod|dev|optional|peer> ...]]
npm error [--strict-peer-deps] [--foreground-scripts] [--ignore-scripts] [--no-audit]
npm error [--no-bin-links] [--no-fund] [--dry-run]
npm error [-w|--workspace <workspace-name> [-w|--workspace <workspace-name> ...]]
npm error [-ws|--workspaces] [--include-workspace-root] [--install-links]
npm error
npm error aliases: clean-install, ic, install-clean, isntall-clean
npm error
npm error Run "npm help ci" for more info
npm error A complete log of this run can be found in: C:\Users\User\AppData\Local\npm-cache\_logs\2026-04-10T05_56_48_557Z-debug-0.log
##[error]Cmd.exe exited with code '1'.ํด๊ฒฐ ๋ฐฉ๋ฒ์ package-lock.json ํ์ผ์ ์ญ์ ํ๊ณ npm install์ ๋ก์ปฌ์์ ์คํํ์ฌ ์๋ก์ด ์ ๊ธ ํ์ผ์ ์์ฑํ ๋ค์ CI/CD ํ๊ฒฝ์ ํธ์ํ์ฌ ๋ค์ ์คํํ๋ ๊ฒ์
๋๋ค.
๋น๊ต ์์ฝ
| ํน์ง | npm install | npm ci |
|---|---|---|
| ์ฃผ์ ์ฌ์ฉ ์ฌ๋ก | ๋ก์ปฌ ๊ฐ๋ฐ, ํจํค์ง ์ถ๊ฐ | CI/CD, ํ๋ก๋์ ๋น๋, ํ ๋๊ธฐํ |
| Lockfile ์ข ์์ฑ | ์์ฑ ๋๋ ์ ๋ฐ์ดํธ ๊ฐ๋ฅ | ํ์, ์์ ๋ถ๊ฐ |
| ๋ฒ์ ํ์ธ | ์ ์ฐํจ(SemVer ๋ฒ์ ์ค์) | ์๊ฒฉํจ(Lockfile์ ์ ํํ ๋ฒ์ ์ ์ง) |
| node_modules | ๊ธฐ์กด ํ์ผ ์ถ๊ฐ/์ ๋ฐ์ดํธ | ์ญ์ ํ ์ฒ์๋ถํฐ ๋ค์ ์ค์น |
| ์ฌํ์ฑ | ๋ฎ์(๋ฒ์ ๋ณ๋ ๊ฐ๋ฅ์ฑ ์์) | ๋์(ํ์ ์ ์ธ ๋น๋) |
์์ธํ ๊ธฐ์ ์ ๋ด์ฉ์ npm Docs ํฌํธ์ npm-install ๋ฐ npm-ci ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
๊ฐ๋ฐ ์ข ์์ฑ vs ์ข ์์ฑ
dependencies๋ ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๋ฐ ํ์ํ ํจํค์ง๋ฅผ ์๋ฏธํ๋ฉฐ, devDependencies๋ ๊ฐ๋ฐ ๋๋ ๋น๋ ๊ณผ์ ์์๋ง ํ์ํ ํจํค์ง ๋๋ ๋๊ตฌ๋ฅผ ์๋ฏธํฉ๋๋ค.
ํ์์ ๋ฐ๋ผ dependencies ๋๋ devDependencies๋ง ์ ํ์ ์ผ๋ก ์ค์นํ ์ ์์ต๋๋ค.
์๋ ๋ช
๋ น์ด๋ node_modules ํด๋์ ์๋ ์ข
์์ฑ ํ์ผ๋ง ์ค์นํฉ๋๋ค.
npm install --production
# ๋๋
npm install --omit=devpackage-lock.json VS shrinkwrap.json
Shrinkwrap์ package-lock.json์ ๊ณต๊ฐ ๋ฒ์ ์
๋๋ค. ์ด ํ์ผ์ NPM์ ๊ฒ์๋์ง๋ง, package-lock.json ์๋ณธ์ ๊ฒ์๋์ง ์์ต๋๋ค. ๋ฐ๋ผ์ Shrinkwrap์ ์ฌ์ฉํ๋ฉด ํจํค์ง ์ค์น ํ๋ก๊ทธ๋จ์ด ์ค์น๋ ์ข
์์ฑ๊ณผ ์ ํํ ๋์ผํ ๋ฒ์ ์ ํจํค์ง๋ฅผ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
npm shrinkwrap ๋ช
๋ น์ด๋ฅผ ์คํํ๋ฉด package-lock.json ํ์ผ์ shrinkwrap.json ํ์ผ๋ก ๋ณํํ ์ ์์ต๋๋ค.
๋ํ NPM 2-4 ๋ฒ์ ๊ณผ์ ํ์ ํธํ์ฑ๋ ์ ๊ณตํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก Shrinkwrap์ ์ฌ์ฉํ ํ์๋ ๊ฑฐ์ ์์ผ๋ฉฐ, ๊ธฐ์กด์ package-lock.json๋ง์ผ๋ก๋ ์ถฉ๋ถํฉ๋๋ค.
์์ ์ CI ๊ด๋ จ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํ๋ก์ ํธ์์ shrinkwrap์ ์ฌ์ฉํ ์ ์ด ์๋๋ฐ, ๋ ๋์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ ๊ฑฐ๋ผ๊ณ ์๊ฐํฉ๋๋ค.