[node.js] 프로젝트 시작 단계의 주요 프레임워크/라이브러리 및 기본 세팅
API 작성 프로젝트 시작 단계에서 필요한 기본 세팅들
1. npm 시작
작업 중인 프로젝트 폴더에서 npm init -y 명령어 입력 후 아래 프레임워크/라이브러리 설치
npm init -y를 입력하면 package.json 파일이 설치된다.
npm init -y
2. nodemon global (-g)로 설치하기
npm install -g nodemon
파일 저장하면 자동으로 서버가 재시작되도록 하는 nodemon을 global로 설치하여 모든 프로젝트 진행 시 사용할 수 있도록 한다.
package.json 파일의 script에 nodemon으로 쉽게 서버를 시작할 수 있는 명령어를 추가해 두면 편하다.
아래와 같이 추가해두면 npm start 명령어 만으로도 nodemon으로 app.js를 실행할 수 있다.
"scripts":{
"start": "nodemon app.js"
}
파일 저장 후 바로 서버가 재시작 되지 않는다면, rs 명령어(restart)를 입력하면 재식작 시킬 수 있다.
3. git ignore 설정
git으로 관리하지 않을 파일들 미리 설정
미리 설정하지 않으면 개인 정보가 포함된 파일이 github에 올라가 보안 상 문제가 발생하거나
너무 용량이 큰 파일이 올라가 매우 느려지는 등 여러 문제가 발생할 수 있다.
gitignore 파일 생성해주는 사이트: https://www.toptal.com/developers/gitignore
gitignore.io
Create useful .gitignore files for your project
www.toptal.com
- 파일 생성 시 추가되어야 하는 키워드들 (예시)
- VisualStudioCode
- Vim
- WebStorm
- macOS
- Linux
- Windows
- Zsh
- Node
4. 기본적인 프레임워크/라이브러리들 설치
설치 명령어는 npm install [프레임워크/라이브러리 이름]
설치하면 package.json 파일의 "dependencies": 에 아래와 같이 추가된다.
"dependencies": {
"cors": "^2.8.5",
"dotenv": "^16.0.3",
"express": "^4.18.2",
"morgan": "^1.10.0",
"mysql2": "^3.2.0",
"typeorm": "^0.3.12"
1. express
- http 메소드별 function 할당 및 여러 기능을 쉽게 하는 server-side Framework
2. cors
- 서로 다른 출처의 http 통신을 막는 SOP(Same Origin Policy) 규약 정책을 넘어서 다른 주소 간에 통신할 수 있도록 해주는 설정
- 서로 다르두 개의 origin/domain 끼리의 데이터 주고 받기가 가능하게 함
3. morgan
- http 통신 기록하는 logger 패키지
- 아래 4가지 내부 속성 중 선택하여 로그의 포맷 설정 가능
1) common
2) dev
3) short
4) tiny
4. dotenv
- .env 파일을 생성하여 환경 변수들을 정의하는 라이브러리
- 온라인에 업로드할 경우 보안에 위협이 될 수 있기 때문에 반드시 .gitignore 파일에 추가하여 github에 업로드 되지 않도록 주의
5. mysql
- 데이터 관리하고 저장할 RDBMS 설치
- 꼭 mysql일 필요는 없음
6. typeorm
- DB를 관리하는 라이브러리
- 현재 프로젝트에서는 DB와 API의 link 용도로만 사용함
5. .env.sample 파일 만들기
git hub에 .env 파일 대신 다른 팀원들이 쉽게 알아보고 이해할 수 있도록 하는 .env 파일 작성 template 역할의 .env.sample 파일을 생성하여 github에 업로드한다.
DB_CONNECTION='RDBMS NAME'
DB_HOST='IP address'
DB_USERNAME='Your user name'
DB_PASSWORD='Your password for the RDBMS'
DB_DATABASE='Name of your database'
DB_PORT='Database port number'
DB_LOGGING='True/False'
DATABASE_URL='rdbmsType://username:password@iphost:portNumber/databaseName'