자바스크립트가 개발 당시 동적인 웹 페이지 개발을 위해 사용되었던 관계로 웹 브라우저 내에서만 구동이 가능했지만 Node.js라는 새로운 런타임의 등장으로 웹 브라우저가 아닌 환경에서 자바스크립트를 사용할 수 있게되었습니다. 그로 인에 자바스크립트만 알면 프론트엔드와 백엔드 모두 구현이 가능한 시대가 되었습니다.
오늘은 Node.js의 버전을 관리하는 nvm(Node version manager)와
패키지를 관리하는 npm(Node package manager) package.json에 대하여 정리하고자 합니다.
만약 여러가지 node.js 버전이 설치되어 있고 개발환경에 따라 다른 버전의 node.js를 사용해야하는 경우, 기존의 버전을 삭제하지 않고 간단한 명령어로 버전 변경이 가능하다. 그리고 새로운 버전의 node.js를 설치하는 것도 가능합니다.
nvm -v // 현재 nvm 버전 확인
nvm ls // 현재 설최되어 있는 node.js 버전 확인
nvm use "사용 버전" // 버전 변경
nvm alias default "별도 명칭" // 별도 명칭으로 사용 버전을 기본값으로 설정
nvm install --lts // node.js lts버전 설치(long term support)
node -v // 노드 버전 확인
node.js 최신버전이 궁금하다면 여기에서 확인이 가능합니다.
개발하면서 필요한 다양한 라이브러리와 같은 모듈들을 관리해주는 것이 NPM(Node Package Manager)의 역할이다. 터미널에서 init 명령어를 통해 해당 디렉토리에 package.json 파일을 설치하고 패키지를 관리합니다.
npm init // 해당 디렉토리에 package.json 설치
node.js 최신버전을 사용하고 싶다면 여기에서 확인이 가능합니다.
nvm install --lts // node.js lts 버전으로 설치
package.json에는 해당 프로그램을 실행시키기 위한 모듈의 정보, 실행 방법, 테스트 하는 방법 등이 명시되어 있습니다.
터미널 환경에서 npm install 명령으로 package.json의 'devDependencies'와 'Dependencies'에 명시된 패키지들을 한번에 node.modules에 다운로드 받게 됩니다. 소스 코드와 함께 패키지를 관리하는 것이아니라 필요할 때 npm을 통해 설치가 가능하므로 관리하므로 코드의 용량을 줄일 수 있습니다.
// package.json 예시
"name": "example",
"version": "1.0.0",
"description": "example",
"main": "index.js",
"scripts": {
"start": "node index.js",
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"@mochajs/json-file-reporter": "^1.3.0",
"chai": "^4.3.4",
"codestates-assignment-manager": "^1.7.0",
"mocha": "^8.3.2",
"mocha-multi-reporters": "^1.5.1"
},
"dependencies": {
"range": "^0.0.3"
}
}
"script"에 코드를 작성하면 npm 명령어를 간단하게 사용할 수 있습니다. 예를 들어 위의 코드에는 "start": "node index.js"라 명시되어 있는데 이로써 터머널 환경에서 'node index.js'라고 명령하는 것을 'npm start'라는 명령만으로도 실행 시 킬 수 있습니다.
dependencies와 devDependencies의 차이점은 실제 상품에서 사용할 패키지와 개발용 패키지의 차이입니다. 라이브러리, 패키지 등이 프로젝트의 개발 단계에만 타임에 필요하면 devDependencies에 명시해주고, 실제 프로덕션 환경에서 응용 프로그램에 필요한 패키지라면 dependencies에 명시해주면 됩니다.