C.W.K.
Stream
Lesson 01 of 05 · published

왜 npm 이 여전히 디폴트인가

~10 min · npm, overview, javascript

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

npm — Node Package Manager — 가 2009년 Node.js ship 이후 디폴트 JavaScript 패키지 매니저. 이 quest 의 모든 대안보다 더 오래되고, 덜 영리하고, 더 느려. 그리고 모든 contributor 머신에 이미 있다고 보장할 수 있는 거, 모든 CI 이미지가 이미 지원하는 거, 모든 JavaScript 튜토리얼이 가정하는 거. 그 보편적 floor 가 npm 의 슈퍼파워고, 그게 디폴트로 남는 이유.

npm v11 (Node.js 24 와 함께 ship) 은 Node.js ^20.17.0 || >=22.9.0 필요. 매일 작업에 중요한 최근 개선: 더 나은 캐싱으로 install 더 빨라짐, --ignore-scripts 가 모든 lifecycle script 에 적용 (보안 강화), npm init 이 묵시 디폴트 대신 ESM vs CommonJS 묻기.

npm 한계 진짜야. flat node_modules 구조가 phantom dependencies 허용 — package.json 에 선언 안 됐지만 다른 게 필요해서 우연히 있어서 import 되는 코드. install 이 pnpm 이나 Bun 보다 느림 (Next.js install ~57초 vs ~9초). lockfile (package-lock.json) 이 verbose 하고 자주 merge-conflict. 그리고 npm 이 native 로 monorepo 워크플로우를 pnpm 이나 Yarn 만큼 잘 지원 안 함.

그 약점 중 어느 것도 npm 의 가장 큰 강점 압도 안 함: 이미 거기 있어. 취미 프로젝트, 오픈소스 라이브러리, 100% 확신 못 하는 팀에게 npm 이 안전한 디폴트. speedup 또는 monorepo 지원 원할 때 pnpm 이나 Bun 손에 잡아.

Code

Node.js 깐 순간 받는 거·bash
# Homebrew 로 Node install (또는 nvm, fnm, mise, asdf, ...)
brew install node

# npm 이 번들 — 공짜로 받음
node --version    # v22.x.x or v24.x.x
npm --version     # 10.x or 11.x

# npx (일회용 패키지 runner) 도 번들
npx --version

External links

Exercise

'npm --version' 과 'node --version' 돌려. Node 없으면 Homebrew 통해 install ('brew install node'). 그 다음 scratch 디렉토리 만들고 'npm init -y' — 생성된 package.json 읽어. 모든 필드에 의미 있어; 모든 JS 도구가 도는 핵심 파일이야.

Progress

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

댓글 0

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

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