작성
·
273
1
console.log(process.env.NODE_ENV);
설정한 부분을 콘솔에 기록하는 부분의 코드가 동일했기 때문입니다. 그런데 답변을 보니 DefinePlugin과 env 설정이 다른 것으로 보여서 개념상의 차이가 어떤 부분인지 싶어 질문드립니다.답변 1
1
console.log(process.env.REACT_APP_API_KEY)
다시 확인해 보니 env 의 객체가 달랐지만, 모두 env 객체를 통해서 호출하는 것으로 보여집니다. DefinePlugin 역시 env 파일에 종속되는 개념인지 궁금합니다.
둘은 다릅니다.
process는 노드 런타임에서 사용하는 객체인데요 이중 process.env에 환경변수 값이 있습니다. 가령 쉘에서 MODE=production 이란 환경변수를 설정하고 노드 어플리케이션을 실행하면 process.env.MODE에 "production"이란 문자열 값이 들어 있습니다.
한편 DefinePlugin은 번들할 자바스크립트 코드안으로 값을 주입하는 역할을 하는 웹팩 플러그인입니다. new DefinedPlugin({mode: JSON.stringify("production")}) 으로 설정하고 웹팩으로 코드를 번들하면 결과물 코드에 mode="procution" 이란 코드가 추가됩니다.