
Node.js 개발의 핵심, node
와 npm
명령어 완벽 이해하기
Node.js는 자바스크립트를 웹 브라우저가 아닌 환경에서도 실행할 수 있게 해주는 런타임입니다. Node.js를 설치하면 두 가지 필수적인 명령줄 도구가 함께 제공되는데, 바로 자바스크립트 코드를 실행하는 node
와 패키지 관리를 담당하는 npm
입니다. 이 두 도구의 기능을 명확히 이해하면 Node.js 개발을 훨씬 효율적으로 할 수 있습니다.
node
명령어: 자바스크립트 코드 실행
node
명령어는 여러분이 작성한 자바스크립트 파일을 직접 구동하는 데 사용됩니다. 이는 Node.js 런타임을 통해 코드를 해석하고 실행하는 역할을 합니다.
1. 자바스크립트 파일 실행
가장 일반적인 node
명령어의 사용법입니다. .js
확장자를 가진 파일을 인수로 넘겨주면, Node.js가 해당 파일을 읽어 실행합니다.
예시 코드 (app.js)
// app.js
console.log("Node.js로 실행된 첫 번째 코드입니다!");
const http = require('http'); // 내장 HTTP 모듈 로드
// 간단한 HTTP 서버 생성
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello from Node.js Server!\n');
});
const port = 3000;
server.listen(port, () => {
console.log(`서버가 http://localhost:${port}/ 에서 실행 중입니다.`);
});
위와 같이 작성된 파일을 실행하려면, 터미널에 아래와 같이 입력합니다.
node app.js
이 명령어를 실행하면 Node.js 환경에서 app.js
파일이 구동되며 웹 서버가 시작됩니다.
2. 대화형(REPL) 모드
node
명령어를 단독으로 입력하면 REPL(Read-Eval-Print Loop) 모드로 진입합니다. 이 모드는 마치 계산기처럼 즉석에서 자바스크립트 코드를 입력하고 실행 결과를 바로 확인하는 데 유용합니다. 간단한 함수 테스트, 변수 값 확인, 또는 산술 연산 등에 활용할 수 있습니다.
node
> let message = "안녕하세요?";
undefined
> console.log(message);
안녕하세요?
undefined
> 15 * 3;
45
> function add(a, b) { return a + b; }
undefined
> add(10, 20);
30
> .help // 도움말 보기
> .exit // REPL 모드 종료
3. 버전 확인
현재 시스템에 설치된 Node.js의 버전을 빠르게 확인하고 싶을 때 사용합니다.
node -v
# 출력 예시: v20.10.0
npm
명령어: Node.js 패키지 관리
npm(Node Package Manager)은 Node.js 프로젝트의 의존성(dependencies)을 관리하는 데 필수적인 도구입니다. 전 세계 개발자들이 만든 수많은 오픈 소스 패키지(라이브러리)를 쉽게 설치하고, 업데이트하고, 공유할 수 있게 돕습니다. Node.js를 설치하면 npm도 자동으로 설치됩니다.
package.json
파일의 역할
npm의 핵심은 프로젝트의 “명함” 역할을 하는 package.json
파일입니다. 이 파일은 프로젝트의 이름, 버전, 설명, 그리고 가장 중요한 프로젝트가 의존하는 라이브러리 목록을 정의합니다.
package.json
예시
{
"name": "my-node-app",
"version": "1.0.0",
"description": "Node.js npm 예제 애플리케이션입니다.",
"main": "index.js",
"scripts": {
"start": "node index.js",
"dev": "nodemon index.js",
"test": "jest"
},
"dependencies": {
"express": "^4.18.2",
"lodash": "^4.17.21"
},
"devDependencies": {
"jest": "^29.7.0",
"nodemon": "^3.0.1"
}
}
scripts
: 자주 사용하는 명령어를 별칭으로 등록하는 섹션입니다.npm run [별칭]
형태로 실행하며,start
명령어는npm start
로 단축할 수 있습니다.dependencies
: 프로젝트를 실행하는 데 필수적인 라이브러리 목록입니다. 웹 프레임워크인express
나 유틸리티 라이브러리인lodash
등이 여기에 포함됩니다.devDependencies
: 개발 단계에서만 필요한 라이브러리 목록입니다. 테스트 도구인jest
나 코드 변경을 감지해 서버를 자동 재시작하는nodemon
같은 도구들이 여기에 속합니다.
자주 사용되는 npm
명령어
npm -v
(버전 확인): 현재 설치된 npm의 버전을 확인합니다.
npm -v # 출력 예시: 10.2.4
npm init
(프로젝트 초기화): 새로운 Node.js 프로젝트를 시작할 때 사용합니다. 몇 가지 질문에 답하면package.json
파일이 자동으로 생성됩니다. 모든 질문에 기본값으로 빠르게 생성하려면npm init -y
명령어를 사용합니다.
npm init # 또는 npm init -y
npm install [패키지명]
(패키지 설치): 프로젝트에 필요한 패키지를 설치합니다. 설치된 패키지는./node_modules
디렉토리에 저장되며,package.json
의dependencies
에 자동으로 추가됩니다.
npm install express npm install lodash
npm install -D [패키지명]
(개발용 패키지 설치): 개발 환경에서만 필요한 패키지를 설치합니다. 이 패키지들은package.json
의devDependencies
에 추가됩니다.-D
는--save-dev
의 줄임말입니다.
npm install -D jest npm install -D nodemon
npm install -g [패키지명]
(전역 패키지 설치):-g
플래그를 사용하면 패키지를 시스템 전역에 설치하여 어떤 디렉토리에서든 해당 명령어를 사용할 수 있습니다. 주로CLI(Command Line Interface)
도구를 설치할 때 사용됩니다.
npm install -g pm2 npm install -g create-react-app
npm install
(모든 의존성 설치):package.json
파일이 있는 프로젝트에서 이 명령어를 실행하면, 파일에 명시된 모든dependencies
와devDependencies
를 한 번에 설치합니다. 다른 개발자가 공유한 프로젝트를 시작할 때 필수적으로 사용됩니다.
# package.json 파일이 있는 디렉토리에서 실행
npm install
npm uninstall [패키지명]
(패키지 제거): 설치된 패키지를 삭제하고package.json
에서도 해당 기록을 제거합니다.
npm uninstall express npm uninstall -D jest
npm start
또는npm run [스크립트명]
(스크립트 실행):package.json
의scripts
섹션에 정의된 사용자 지정 명령어를 실행합니다.start
스크립트는npm start
로 바로 실행할 수 있으며, 그 외의 스크립트는npm run [스크립트명]
형태로 실행합니다.
npm start # package.json의 "start" 스크립트 실행
npm run dev # package.json의 "dev" 스크립트 실행
npm run test # package.json의 "test" 스크립트 실행
Node.js 개발의 거의 모든 과정에서 이 두 가지 핵심 도구가 활용되므로, 각 명령어의 기능과 역할을 숙지하는 것이 중요합니다.