티스토리 뷰

728x90
반응형

nodejs v20.6.0 버전이 2023년 9월 4일 공개가 되었는데요

 

이 좋은 소식을 얼른 알리려다가 이제야 포스팅을 작성하게 되네요

 

https://nodejs.org/en/blog/release/v20.6.0

 

Node v20.6.0 (Current) | Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

 

가장 주목할만한 업데이트는 환경변수를 위한 env 파일의 지원입니다

 

node --env-file=.env index.js

 

ini 형태의 key-value를 갖는 파일을 읽을수 있으며, 이를 환경변수로 사용합니다

 

--env-file 옵션을 사용하면 되고, 별다른 패키지를 설치하지 않아도 됩니다

 

 

nvm install 20.6.0
nvm use 20.6.0
node -v
v20.6.0

 

이렇게 v20.6.0 이상의 버전을 설치하시고

 

.env 파일을 작성합니다 기존처럼요

// .env
HELLO="World"

 

 

그리고 해당 env 값을 읽는 코드를 작성하겠습니다

// index.js
console.log(`Hello ${process.env.HELLO}`)

 

 

node를 실행할때 --env-file 옵션에 .env 파일의 경로를 포함하여 실행해주시면 됩니다

node --env-file=.env index.js
Hello World

 

 

이 분야에서 가장 유명한 패키지가 dotenv 인데요

 

dotenv를 당장 버려도 되나? 라는 질문에는 선뜻 예라고 답하기 어렵습니다

 

왜그럴까요

 

1. 멀티라인을 지원하지 않습니다

# .env.multiline
HELLO="This
is
a
multiline"

 

node --env-file=.env.multiline index.js
Hello undefined

 

 

2. 덮어쓰기 옵션이 없습니다

 

# .env
HELLO="World"

 

export HELLO="System"
node --env-file=.env index.js
Hello System

 

미리 설정된 동일한 이름의 환경변수가 존재하는경우 해당 값이 우선 사용됩니다

 

기존에 설정된 환경변수 값을 무시할지 말지에 대한 옵션을 설정할수 없습니다

 

 

3. 확장 변수

 

dotenv의 확장팩(?)인 dotenv-expand 패키지에서는 다음과 같은 기능을 제공합니다

 

# .env
PASSWORD="password123"
SECRET=$PASSWORD

 

이렇게 선언된 다른 환경변수를 참조하여 확장된 변수를 만들수 있는데요

 

node v20.6.0의 기본기능은 해당 구문을 인식하지 않습니다

node --env-file=.env index.js
The secret is $PASSWORD

 

 

 

제가 생각하는 가장 큰 단점은 overwrite에 대한 옵션이 없다는부분인데요

 

그래도 환경변수 관리가 심오하지 않은 작은 프로젝트에서는 충분히 사용하기 좋겠습니다

 

 

 

참고

https://www.dotenv.org/blog/2023/10/28/node-20-6-0-includes-built-in-support-for-env-files.html

 

Node.js 20.6.0 includes built-in support for .env files

Node v20.6.0+ adds native support for loading .env files.

www.dotenv.org

 

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함