inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

프론트엔드 개발환경의 이해와 실습 (webpack, babel, eslint..)

자주 사용하는 플러그인

DefinePlugin 에서

263

에이든

작성한 질문수 2

0

TWO가 전역변수로 접근된다고 하셨는데 window.TWO를 콘솔찍어보면 undefined 입니다.

TWO 변수는 어디에 있는건가요...

nodejs 웹팩 eslint babel

답변 2

2

Sungmin Jung

TWO가 전역변수로 접근된다는 의미는 어플리케이션단에서의 의미입니다. 

플러그인은 번들링된 이후에 적용되기 때문에, DefinePlugin은 번들된 js에서 TWO를 찾아 값을 변경합니다.

new webpack.DefinePlugin({
            ONE:'alert("POP! ONE")',
            TWO:JSON.stringify('1+1'),
            'api.domain':JSON.stringify('http://dev.com')
       })

위와 같이 설정했을때 아래의 코드를 빌드하고 실행해보면,

import './app.css';
import nyancat from './nyancat.jpg';

document.addEventListener('DOMContentLoaded',()=>{
    document.body.innerHTML=`
    <img src="${nyancat}"/>
    `;

    
} )
ONE
console.log(TWO);
console.log(api.domain);

순서대로 alert창에 "POP! ONE"이 출력되고,

콘솔에는 1+1 과 http://dev.com가 출력됨을 확인하실 수 있습니다.

번들된 파일에 ONE, TWO, api.domain의 정보를 선언한 Define값으로 변경하고 변경된것은 브라우저의 자바스크립트로 실행됩니다.

만약 Define에 ONE에 대한 명시가 없다면 브라우저는 ONE이 정의되지 않았다는 에러를 콘솔에서 확인할 수 있습니다.

window,TWO에 변수를 넣고 싶으시다면 TWO:'window.TWO=2',

이런식으로 사용될 수 있을것 같습니다.

0

김정환

저도 문서만 보고 전역변수라고 생각했고 그래서 브라우저 환경에서 전역객체 winow로 접근할수 있다고 생각했었어요. 

> The DefinePlugin allows you to create global constants which can be configured at compile time.

Sungmin Jung님 말씀대로 어플리케이션 관점에서 전역이라고 생각하는 것이 맞겠네요. 

지금 시점에서 해당 강의를 듣는 것에 대하여

1

111

3

2025년 기준 번들러 트렌드와 선택 기준이 궁금합니다 (Webpack, Vite, tsup 등)

1

223

1

에러 해결 공유드립니다

1

225

2

webpack 4 버전과 호환되는 플러그인 버전 공유드립니다

1

233

2

eslint

0

381

3

도와주세요!

0

167

2

[수강 중 트러블슈팅 공유] webpack, webpack-cli 버전

1

145

1

질문 an error occurred while loading the image

1

469

1

webpack에서 babel-loader 사용할때 질문

1

150

1

자주 사용하는 플러그인 에서 질문이 있습니다.

1

168

1

eslint no-extra-semi 관련 질문

1

144

1

webpack5 에서 open index.html하는법 + 질문

1

168

1

TypeError: ((process.env.NODE_ENV === "production") && [MiniCssExtractPlugin]) is not iterable

2

302

1

혹시 웹팩 5 내용으로 강의 업데이트는 안되는건가요?

1

371

1

에러없이 png안뜨시는 분들

1

274

1

Error: Cannot find module &#x27;node:crypto&#x27;

1

465

1

DefinePlugin 관련; env와 관련하여, (21.06.22 16:15, aloha_jh) 답변포함

1

407

1

깃허브 확인 문의

0

575

1

폴더를 prettier로 돌렸을 때 나오는 에러 구문에 대한 질문

0

407

1

해쉬값과 캐쉬 갱신

1

461

1

Hash 에러 발생

1

2667

2

webpack.config.js에서의 CommonJS방식에 대한 질문

0

831

3

웹팩 버전

0

524

1

웹팩-cli 버전을 명시하지 않으면 왜 에러가 날까요?

0

485

1