본문 바로가기
C.W.K.
Stream
Lesson 03 of 05 · published

매일 치는 npm 명령

~13 min · npm, commands, workflow, ci

Level 0입문자
0 XP0/55 lessons0/16 achievements
0/80 XP to next level80 XP to go0% complete

npm이 제공하는 기능은 넓지만 일상에서 자주 쓰는 명령은 많지 않아. 다음 여섯 가지면 대부분의 작업을 처리할 수 있어.

npm init은 프로젝트를 만들고, npm init -y는 질문을 건너뛰고 기본값을 받아들여. 인자 없이 npm install을 실행하면 package.json의 모든 의존성을 설치하고, 패키지 이름을 붙이면 해당 패키지를 추가해. -D는 빌드 도구나 테스트 실행기처럼 개발할 때만 필요한 의존성을 devDependencies에 넣어. 기본값은 운영 환경에도 필요한 dependencies야.

npm ci는 CI/CD를 위한 설치 명령이야. node_modules를 지우고 package-lock.json 그대로 엄격하게 설치하며, lockfile과 package.json이 맞지 않으면 실패해. npm install보다 빠르고 결정적이므로 자동 빌드가 일어나는 모든 곳에서 사용해.

npm run <script>는 package.json의 scripts에 정의된 스크립트를 실행해. npm testnpm startrun을 생략할 수 있고, 나머지는 모두 npm run이 필요해.

npx <tool>은 패키지를 전역 설치하지 않고 내려받아 실행해. npx create-react-app이나 npx tsc --init처럼 한 번만 쓸 도구에 알맞고, 전역 설치 목록도 어지럽히지 않아.

npm audit은 의존성 트리에서 알려진 취약점을 찾아. 매주 실행하고, npm audit fix로 호환성을 깨뜨리지 않는 수정안을 적용할 수 있어. 결과는 커밋하기 전에 꼭 검토해.

Code

초기화, 설치, 추가, 제거·bash
# 새 프로젝트
npm init -y

# package.json 의 모든 거 install
npm install

# 런타임 dep 추가
npm install express

# dev dep 추가
npm install -D vitest typescript

# 제거
npm uninstall express
CI에서 빠르고 엄격하게 설치·bash
# CI 스크립트에서 (GitHub Actions, GitLab CI, ...)
npm ci

# 'npm install' 과 차이:
# - node_modules 먼저 삭제
# - package-lock.json 에서 strict install (resolution 안 함)
# - package.json 과 lockfile 이 disagree 면 실패
# - 더 빠름 (resolution 작업 없음) 재현 가능
스크립트와 npx·bash
# package.json 의 "scripts" 에 정의됨
npm run build
npm run dev
npm test          # shortcut, 'run' 불필요
npm start         # shortcut, 'run' 불필요

# 글로벌 install 오염 없이 일회용 도구
npx create-vite my-app
npx tsc --init
npx eslint .
보안 검사와 정비·bash
# 취약점 찾기
npm audit

# 비파괴 fix 적용 (commit 전 검토!)
npm audit fix

# 뭐가 outdated?
npm outdated

# 인터랙티브 업그레이드 (새 npm 버전)
npm update

External links

Exercise

기존 JavaScript 프로젝트에서 'npm audit'을 실행하고 보고서를 읽어. 문제가 표시되면 'npm audit fix'를 실행한 뒤 커밋 전에 lockfile 차이를 검토해. 이어서 GitHub Actions 같은 CI 설정이 'npm install'과 'npm ci' 중 무엇을 쓰는지 확인하고, 전자라면 'npm ci'로 바꿔.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.