javaScript/nodeJs

production// 배포모드

부엉이사장 2023. 1. 16. 09:27

먼저 cross-env모듈을 설치해주자. 따로 모듈을 서버코드에서 가져올 필요는 없다.

 

npm i cross-env

 

서버 실행 모듈을 대게는 배포모드일때 pm2를 사용하며, 개발모드일때는 nodemon모듈을 사용한다.

이를 적용하려면 package.json을 수정해주어야 한다.

  "scripts": {
    "start": "cross-env NODE_ENV=production PORT=3000 pm2 start app.js",
    "dev": "cross-env NODE_ENV=development nodemon app.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },

 

# start : npm start를 커맨드에 쳤을때 설정값이다.

위코드를 해석하자면 

NODE_ENV를 production으로 설정, 포트는 3000번, app.js파일을 pm2모듈로 시작하겠다

라는 뜻이다. 

코드 실행은 npm start를 치면 된다.

 

# dev : 개발모드에서는 npm run dev를 치면

NODE_ENV를 development로 설정하겠고 nodemon으로 app.js파일을 실행하겠다는 뜻이다.

app.js실행은 npm run dev를 치면 nodemon으로 코드가 실행된다.

 

 

 

이렇게하면 개발모드와 배포모드를 구분해서 개발할 수 있다.

 

예를들어 morgan모듈 사용을 생각해보자.

morgan의 모드는 combined와 dev 두가지가 있는데 combined모드는 자세한 내역을 보내준다.

dev는 어차피 개발용이니 나혼자만 쓰는거라 자세하지 않아도 괜찮다.

 

if (process.env.NODE_ENV === "production") {
  app.use(morgan("combined"));
} else {
  app.use(morgan("dev"));
}

이렇게 서버코드에서 설정을 해주면 NODE_ENV가 production일때는 combined모드로,

다른경우는 dev모드로 실행을 해준다.

 

 

이걸로 winston이나 db접근등을 배포와 개발모드 두가지로 구분지을 수 있다.