Node.js
Node.js
런타임이란 프로그래밍 언어가 돌아가는 환경, 그리고 node.js는 JavaScript 런타임입니다.
NVM
Node Version Manager입니다. NVM을 통해 간단한 명령어로 node를 설치하고, 다양한 node version을 손쉽게 옮겨 다닐 수 있습니다. NVM역시 하나의 프로그램이므로 설치해야 합니다.
NPM
NPM는 Node Package Manager로 일종의 앱스토이다. 필요한 모듈을 다운로드할 수 있는, 모듈들이 모여있는 모듈 스토어이다. 자바스크립트 패키지 매니저이고 NodeJS에서 사용할 수 있는 모듈들을 패키지화하여 모아둔 저장소 역할을 하며 설치/관리를 수행할 수 있는 CLI를 제공한다.
node 모듈을 사용하는 프로젝트에서 npm이라는 키워드는 하나의 명령어처럼 사용되기도 한다. npm start처럼, 프로젝트를 실행시킬 때 npm 키워드를 사용하기도 한다.
package.json
package.json에는 이 프로그램을 실행시키기 위해 필요한 모듈들이 무엇인지, 프로그램을 실행시키는 방법, 프로그램을 테스트하는 방법 등이 명시되어 있다. 즉, 사용자가 package.json에서 필요하다고 하는 모듈을 npm을 이용해 다운받으면 된다.
이 프로그램을 실행시키기 위해 필요한 실제 모듈은 node_modules이라는 폴더에 다 들어가 있는데, package.json에는 어떤 모듈인지만 적혀 있다.
구성
1. dependencies
이 프로젝트가 돌아가기위해 반드시 필요한 모듈들이 무엇인지가 적혀 있습니다. 코드가 작동하기 위해 필해요한 모듈들.
"dependencies": { "react": "^16.8.6", }
2. devDependencies
이 프로젝트를 개발하는 환경에서 필요한 모듈들이 무엇인지가 적혀 있습니다. 예를 들면 코드 모양을 잡아주는 lint나 테스팅 모듈처럼, 실제 프로젝트 동작에 직접적으로 영향을 주지 않는 모듈들을 명시합니다.
"devDependencies": { "jest": "^2.3.0", "eslint" : "^2.0.0" }
3. scripts
npm 으로 실행시킬 수 있는 명령어를 정의합니다. 명령어를 입력하면 어떤 동작을 해야하는지가 적혀 있습니다. 예를들면 npm test 명령어를 입력하면 "test.js 파일을 node 에서 실행시켜라!" 하는 내용들이 들어있습니다. 만약 npm test와 같은 명령어를 실행시켰는데 "정의되지 않은 명령어" 라는 오류 메시지가 나오면, package.json 파일 scripts 에 해당 명령어가 정의되어 있는지를 확인해 보시면 됩니다.
"scripts": { "start": "node app.js", "test": "node test.js", }
예) package.json
{
"name": "shortly-bare",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www",
"test": "mocha __test__/**.test.js --sort --exit",
"report": "mocha __test__/**.test.js --sort --exit --reporter @mochajs/json-file-reporter",
"submit": "codestates-submission"
},
"dependencies": {
"debug": "~2.6.9",
"dotenv": "^8.2.0",
"express": "~4.16.1",
"har-validator": "^5.1.5",
"morgan": "~1.9.1",
"mysql2": "^2.1.0",
"request": "^2.88.2",
"sequelize": "^6.4.0"
},
"devDependencies": {
"chai": "^4.2.0",
"chai-http": "^4.3.0",
"mocha": "^8.0.1",
"sequelize-cli": "^6.2.0",
"sinon": "^9.0.2"
}
}