제한사항
- env-cmd, nodemon watch를 이용해도 .env 파일이 변경될 때마다 다시 읽어들일 수는 없다.
- 따라서 편법이 필요하다.
아이디어
- nodemon이 .env 파일의 변경사항을 감지하도록 한다.
- 컴파일할 때마다 .env 파일을 직접 읽어들인다.
- 읽어들인 .env 파일을
Record<string, string>
형태의 오브젝트로 만든다.
- 만든 오브젝트를
process.env
에 해당 프로퍼티들만 덮어씌운다.
사전 규칙
- .env.local 파일로 실행한 경우에만, 컴파일할 때마다 다시 읽어들인다.
준비물
PROFILE=local
env.util.ts
구현 코드
if(process.env["PROFILE"] === "local") {
const reloaded = EnvUtil.readEnvProps(".env.local");
process.env = {
...process.env,
...reloaded,
}
}
Package.json
{
...
"scripts": {
"watch:local": "**env-cmd -f .env.local** nodemon --watch src -e ts,tsx **--watch .env.local** --exec ts-node src/app.ts",