본문으로 바로가기
Lab

npm 설치 방법, Node.js 받기부터 첫 패키지 설치까지 직접 해 보니

맥(Apple 실리콘)에서 Node.js 24.22.1 LTS 공식 파일을 받아 npm 설치부터 첫 패키지 설치까지 해 봤습니다. 내려받기는 4.7초, 나머지 단계는 각각 0.9초 이하였습니다. 명령과 출력, 단계별 시간, 다른 설치 방법을 고르는 기준까지 담았습니다.

·

Node.js 압축 꾸러미가 열리며 npm 패키지 상자가 함께 나와 새 프로젝트 폴더로 들어가는 개념 그림
npm 설치 방법, Node.js 받기부터 첫 패키지 설치까지 직접 해 보니 표지 삽화

맥(Apple 실리콘)에서 nodejs.org의 LTS 파일인 Node.js 24.22.1(51M)을 받아 npm 설치까지 끝내 보면, 내려받기에 4.7초가 걸리고 나머지 단계는 각각 0.9초 이하로 끝납니다. npm은 따로 받지 않아도 됩니다. 압축을 풀면 node와 함께 npm 11.19.1이 들어 있죠. AI 코딩 도구에게 프로젝트 준비를 맡기기 전에 이 순서를 한 번 손으로 따라가 두면, 에이전트가 낸 오류를 읽기도 쉬워집니다.

따라 할 순서 한눈에 보기

첫 명령을 실행하기 전에 새 빈 폴더를 만들고 그 폴더로 이동합니다.

mkdir npm-install-walk && cd npm-install-walk

아래 아홉 단계는 모두 이 폴더 안에서, 한 터미널 창에서 차례대로 실행하면 됩니다. 단계 중에 node 폴더를 만들고 npm init과 패키지 설치를 하므로, 기존 제품 프로젝트 폴더에서는 실행하지 않는 편이 좋습니다. 측정도 새 임시 폴더 하나 안에서만 했고, 컴퓨터에 원래 있던 다른 Node.js는 건드리지 않았습니다. 명령과 출력은 단계별 절에서 하나씩 보여 드립니다.

  1. 컴퓨터 확인: CPU 종류와 macOS 버전을 봅니다.
  2. Node.js 내려받기: nodejs.org에서 LTS 압축 파일을 받습니다.
  3. 체크섬 확인: 받은 파일이 공식 체크섬과 같은지 봅니다.
  4. 압축 풀기: 파일을 풀고 폴더 이름을 node로 바꿉니다.
  5. PATH에 넣고 버전 확인: node와 npm 버전을 확인합니다.
  6. 새 프로젝트 만들기: package.json을 만듭니다.
  7. 패키지 설치: dayjs를 설치합니다.
  8. 설치한 패키지 써 보기: 한 줄 코드로 실행해 봅니다.
  9. 설치 내역 보기: 설치된 패키지 목록을 확인합니다.

함께 읽을 글

단계마다 시간은 얼마나 걸리나요?

아래 표는 새 임시 폴더에서 위 명령을 한 번씩 실행하며 잰 값입니다. 모든 단계의 종료 코드는 0이었어요.

단계걸린 시간
1. 컴퓨터 확인0.0초
2. Node.js 내려받기4.7초
3. 체크섬 확인0.2초
4. 압축 풀기0.6초
5. PATH에 넣고 버전 확인0.9초
6. 새 프로젝트 만들기0.2초
7. 패키지 설치0.4초
8. 설치한 패키지 써 보기0.0초
9. 설치 내역 보기0.2초
Node.js를 받아 npm으로 첫 패키지를 설치하기 단계별 걸린 시간을 비교한 막대그래프
단계별로 직접 실행해 잰 시간(열릴 때까지 기다린 시간 포함)
도식출처: 명령 실행 실측

가장 오래 걸린 단계는 내려받기였습니다. 다만 이 값은 네트워크 속도에 따라 달라지니, 다른 단계와 견주는 기준으로만 보세요. 그럼 첫 단계부터 명령을 보겠습니다.

Node.js 파일을 받고 확인하는 방법

먼저 내 맥이 Apple 실리콘인지 확인합니다. arm64가 나오면 darwin-arm64 파일을 받으면 되죠.

$ uname -m && sw_vers -productVersion
arm64
27.0.1

다음으로 Node.js 다운로드 페이지에 LTS로 표시된 v24.22.1 파일을 받습니다. 같은 페이지에 v26.12.1(Current)도 있지만, npm 문서는 LTS 표시가 붙은 버전을 설치하라고 안내합니다.

$ curl -fsSLO https://nodejs.org/dist/v24.22.1/node-v24.22.1-darwin-arm64.tar.gz && ls -lh node-v24.22.1-darwin-arm64.tar.gz | awk '{print $5, $9}'
51M node-v24.22.1-darwin-arm64.tar.gz

그런데 받은 파일이 공식 파일과 같은지는 어떻게 알까요? 같은 경로의 SHASUMS256.txt에서 해당 줄을 골라 대조하면 됩니다. OK가 나오면 통과입니다.

$ curl -fsSL https://nodejs.org/dist/v24.22.1/SHASUMS256.txt | grep 'node-v24.22.1-darwin-arm64.tar.gz$' | shasum -a 256 -c -
node-v24.22.1-darwin-arm64.tar.gz: OK

이제 압축을 풀고 폴더 이름을 짧게 바꿉니다. bin 폴더 안을 보면 npm이 어디서 오는지 바로 보여요.

$ tar -xzf node-v24.22.1-darwin-arm64.tar.gz && mv node-v24.22.1-darwin-arm64 node && ls node/bin
corepack
node
npm
npx

Node.js를 설치하면 npm도 같이 오나요?

네, 같이 옵니다. 위 출력처럼 node/bin에는 node 옆에 npm, npx, corepack이 함께 들어 있습니다. npm 공식 문서도 패키지를 설치하려면 버전 관리 도구나 설치 프로그램으로 Node.js와 npm 명령줄 도구를 설치하라고 안내하죠. 그래서 'node js 설치'와 'npm 설치'는 사실상 같은 작업입니다.

압축을 푼 node 폴더의 bin 안에 node, npm, npx, corepack 네 개의 도구가 함께 들어 있고 PATH 화살표가 그 폴더를 가리키는 개념 그림
Node.js 압축 파일을 풀면 npm이 node와 같은 폴더에 함께 들어 있다는 점을 나타낸 개념 그림입니다.

PATH 설정과 버전 확인은 어떻게 하나요?

풀어 둔 node/bin을 PATH 맨 앞에 넣고, 어느 파일이 잡히는지와 버전을 확인합니다.

$ export PATH="$PWD/node/bin:$PATH" && which node npm && node -v && npm -v
./node/bin/node
./node/bin/npm
v24.22.1
11.19.1

이 기록은 단계마다 새 셸에서 실행해서 뒤의 모든 명령 앞에 export를 다시 붙였습니다. 한 터미널 창에서 이어서 따라 한다면 한 번만 적으면 됩니다. 이럴 때는 주의하세요. AI 에이전트가 명령마다 새 셸을 연다면, 이 기록처럼 명령 앞에 PATH 설정을 매번 붙여 달라고 지시해야 같은 node가 잡힙니다. 창을 새로 연 뒤에도 이 설정을 유지하는 방법은 이번 근거 문서들이 다루지 않습니다.

첫 프로젝트에 패키지를 설치하는 방법

npm init -y는 질문 없이 기본값으로 package.json을 만듭니다. 이름은 폴더 이름(walk)을 따라갔어요.

$ export PATH="$PWD/node/bin:$PATH" && npm init -y
Wrote to ./package.json:

{
  "name": "walk",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "type": "commonjs"
}

이어서 dayjs를 버전까지 지정해 설치합니다. --cache는 이 측정의 캐시를 임시 폴더에 두려고 붙인 옵션입니다.

$ export PATH="$PWD/node/bin:$PATH" && npm install dayjs@1.11.23 --cache ./npm-cache && ls
added 1 package, and audited 2 packages in 320ms

found 0 vulnerabilities
npm notice
npm notice New major version of npm available! 11.19.1 -> 12.2.1
npm notice Changelog: https://github.com/npm/cli/releases/tag/v12.2.1
npm notice To update run: npm install -g npm@12.2.1
npm notice
node
node-v24.22.1-darwin-arm64.tar.gz
node_modules
npm-cache
package-lock.json
package.json

설치가 끝나면 node_modules와 package-lock.json이 생깁니다. 에이전트와 함께 작업한다면 이렇게 버전을 지정해 설치하고 잠금 파일을 남겨 두는 편이, 나중에 같은 환경을 다시 만들 때 확인할 거리를 줄여 줍니다. 출력에 나온 npm 12.2.1 안내는 알림일 뿐이고, 설치 자체는 끝난 상태예요.

정말 쓸 수 있는지는 한 줄로 확인해 보세요. 2026-10-26에 7일을 더한 날짜가 나오면 됩니다.

$ export PATH="$PWD/node/bin:$PATH" && node -e "const dayjs = require('dayjs'); console.log(dayjs('2026-10-26').add(7, 'day').format('YYYY-MM-DD'))"
2026-11-02

설치 내역은 어떻게 확인하나요?

npm ls는 이 프로젝트에 설치된 패키지를 트리로 보여 줍니다. 함께 실행한 npm config get prefix는 npm의 전역 설치 위치(prefix) 설정값을 출력하죠.

$ export PATH="$PWD/node/bin:$PATH" && npm ls && npm config get prefix
walk@1.0.0 .
`-- dayjs@1.11.23

/opt/homebrew

예를 들어 여기서는 prefix가 압축을 푼 폴더가 아니라 /opt/homebrew로 나왔습니다. 왜 이 값이 나왔는지는 이 측정만으로는 가를 수 없습니다. 전역 설치(-g)를 할 계획이라면, 그 전에 이 명령으로 위치부터 확인해 보세요. 그래야 패키지가 의도한 곳에 들어가는지 알 수 있습니다.

맥에서 다른 설치 방법은 뭐가 있나요?

이 글은 공식 압축 파일을 직접 푸는 방식으로 진행했습니다. 하지만 npm 문서가 먼저 권하는 방법은 따로 있어요. 문서가 말하는 기준은 이렇습니다.

방법공식 문서의 안내맞는 경우
버전 관리 도구 (nvm, n)강력히 권장. 여러 버전을 설치하고 바꿔 쓸 수 있음여러 Node.js 버전에서 앱을 시험해야 할 때
설치 프로그램 (Node.js 다운로드 페이지)권장하지 않음. 전역 패키지 실행 시 권한 오류가 날 수 있음버전 관리 도구를 쓸 수 없을 때
미리 빌드된 파일 (이 글의 방식)다운로드 페이지에서 제공폴더 하나에 풀어 PATH로 지정해 쓰고 싶을 때

설치 프로그램을 쓴다면 LTS 표시가 붙은 버전을 고르세요. npm 문서는 다른 버전이 아직 npm과 함께 시험되지 않았다고 밝힙니다. 어떤 방법을 고르든 첫 확인은 같습니다. node -v와 npm -v로 이미 설치되어 있는지와 버전을 보면 됩니다. npm만 최신으로 올리려면 문서에 나온 npm install -g npm을 쓰면 됩니다.

버전 관리 도구, 설치 프로그램, 미리 빌드된 파일 세 가지 설치 방법을 공식 문서의 안내와 맞는 경우로 비교한 표
npm 공식 문서와 Node.js 다운로드 페이지의 안내를 기준으로 정리한 비교입니다.
도식출처: 근거를 바탕으로 코드가 그린 도식

막힐 때 확인할 것

명령이 실패했다면 원인을 단정하기 전에 아래부터 하나씩 보세요.

  • 파일 종류: uname -m이 arm64인데 다른 아키텍처 파일을 받지 않았는지
  • 체크섬: OK가 나오지 않았다면 그 파일로 진행하지 않기
  • PATH: which node npm이 방금 푼 node/bin을 가리키는지
  • 새 창이나 새 셸: 다시 열었다면 PATH 설정을 다시 적었는지
  • 전역 설치: 설치 프로그램으로 Node.js를 넣었다면 전역 패키지 실행 때 권한 오류가 날 수 있다는 점(npm 문서 안내)

마지막 점검 목록은 다음과 같습니다.

  • node -v가 v24.22.1, npm -v가 11.19.1로 나오는지
  • 프로젝트 폴더에 package.json과 package-lock.json이 있는지
  • npm ls에 설치한 패키지가 보이는지

측정 조건과 한계

측정은 2026-10-26 16:20 KST에 macOS 27.0.1(Apple 실리콘, arm64) 맥 한 대에서 했습니다. 명령은 새 임시 폴더 하나에서 한 번씩만 실행했고, 컴퓨터에 원래 있던 다른 Node.js는 건드리지 않았습니다. 그래서 시간은 반복 측정한 평균이 아니고, 특히 내려받기 시간은 네트워크 속도에 따라 크게 달라질 수 있어요. 윈도우와 리눅스 설치는 다루지 않았습니다.

참고 자료