개발하면서 빌드하고 실제 서버를 돌려보면 어떻게 되나? 하고 궁금할 때가 있다. 그럴 때는 보통 테스트 서버를 만들어서 체크해보는데, 이 때 env파일을 그때그때 바꾸기가 귀찮아 package.json
의 명령어를 커스텀해서 상황에 따라 다르게 env파일을 사용하곤 한다.
Next로 migrate하면서 명령어에 따라 다르게 env를 사용하는 방법을 간략하게 적어보려고 한다.
"scripts": {
"dev": "cross-env NODE_OPTIONS='--inspect' next dev",
"start": "next start",
"build:test": "env-cmd -f .env.test next build",
"build:prod": "env-cmd -f .env.production next build",
},
env-cmd
라는 라이브러리를 사용해주자. env-cmd
는 env와 함께 node 명령어를 쓸 수 있게 해주는 라이브러리다.
구글링해서 나온 대부분의 글이 위처럼 하면 된다고 나와있었다. 하지만 모두 실패. 안 되는 것이 아니라 build만 하면 .env.production
을 사용했다.
https://github.com/vercel/next.js/discussions/12077#discussioncomment-28231
문제점을 찾았다. .env
파일이 root directory에 있으면 next가 자동으로 이걸 가져간다고 한다. enviroments
라는 폴더를 만들어서 그 안에 .env
파일을 넣어주었다.
"scripts": {
"build:test": "env-cmd -f environments/.env.test next build",
"build:prod": "env-cmd -f environments/.env.production next build",
},
잘된다. 😁