프로그래밍 언어/NODE JS

시퀄라이즈: cross-env

· 코딩마이데이

cross-env 패키지를 사용하면 동적으로 process.env(환경 변수)를 변경할 수 있습니다. 또한, 모든 운영체제에서 동일한 방법으로 환경 변수를 변경할 수 있게 됩니다.

기존 package.json을 다음과 같이 바꿉니다.

 

package.json

{
  "name": "nodebird",
  "version": "0.0.1",
  "description": "익스프레스로 만드는 SNS 서비스",
  "main": "server.js",
  "scripts": {
    "start": "NODE_ENV=production PORT=80 node server",
    "dev": "nodemon server",
    "test": "jest"
  },
  ...
}

 

서버 실행을 위한 npm 스크립트를 두 개로 나누었습니다. npm start는 배포 환경에서 사용하는 스크립트고, npm run dev는 개발 환경에서 적용하는 스크립트입니다. npm start 시에 실행되는 명령어가 좀 독특합니다. 앞에 NODE_ENV=production PORT=80이 붙어있습니다. 스크립트를 실행할 때 process.env를 동적으로 절정하는 방법입니다. process.env.NODE_ENV가 production이 되고, process.env.PORT가 80이 됩니다.

그런데 이 방식에는 문제가 있습니다. 리눅스나 맥에서는 되지만, 윈도에서는 process.env를 이얼게 설정할 수 없습니다.

 $ npm start

> nodebird@0.0.1 start
> NODE_ENV=production PORT=80 node server

'NODE_ENV' is not recognized as an internal or external command,
operable program or batch file.

 

이럴 때 cross-env가 사용됩니다. npm을 통해 설치됩니다.

$ npm i cross-env

 

다시 package.json을 다음과 같이 수정하면 됩니다.

{
  "name": "nodebird",
  "version": "0.0.1",
  "description": "익스프레스로 만드는 SNS 서비스",
  "main": "server.js",
  "scripts": {
    "start": "cross-env NODE_ENV=production PORT=80 node server",
    "dev": "nodemon server",
    "test": "jest"
  },
...

 

창에 cross-env를 붙임으로써 윈도에서도 실행됩니다.