11. Babel
Intro
์ผ๋ถ css๊ธฐ๋ฅ๋ค์ ํ์ ๋ธ๋ผ์ฐ์ ์์ ์ฌ์ํ ์ ์๋ ๊ธฐ๋ฅ๋ค์ด๊ธฐ ๋๋ฌธ์, ํ์๋ธ๋ผ์ฐ์ ๋ฅผ ํธํํ๊ธฐ์ํด vendor prefixer์ค์ ํ์.
css์ฒ๋ผ js์ ์คํ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์ค์ตํ๋ ES6์คํ์ด ํ์๋ธ๋ผ์ฐ์ ์์ ์ง์์ด ์๋๋ ๊ธฐ๋ฅ๋ค์ ๋ดํฌํ๊ณ ์์.
Bable
ES6+์ฝ๋๋ฅผ ํ์๋ฒ์ ์ฝ๋๋ก transpiling ํ๊ธฐ ์ํ ๋๊ตฌ
Babel์ ๋ค์ํ ๋ชจ๋์ ๋ด๋ ์ผ์ข ์ ์์ ์ญํ . ์ฝ๋๋ฅผ ์ปดํ์ผํ๊ธฐ ์ํด ์์ ๋ชจ๋๋ค(ex:presets)์ ์ฌ์ฉ
ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ง์ ํผ๋์ ํด๊ฒฐ ํด ์ค ์ ์๋ค.
์ ์ ๋ฐ์ ํด๊ฐ๋ ์ธ์ด์ ๊ธฐ๋ฅ๋ค์ ์ฌ์ฉํ๋ฉด ๊ฐ๊ฒฐํ๊ณ ๋ช ํํ๊ฒ ํํํ ์ ์๋ ๊ธฐ๋ฅ ํน์ ์ฝ๋๋ฅผ ๋ ์์ ํ๊ฒ ์์ฑํ ์ ์๋ ์ด๋ฐ ๊ธฐ๋ฅ๋ค์ ํ์ ๋ธ๋ผ์ฐ์ ์์๋ ์์ ํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๋์์ฃผ๋ ๋๊ตฌ๊ฐ Babel
์ค์ต
๋ชจ๋ ์ค์น
@babel/core
: Bable์ ํต์ฌ๊ธฐ๋ฅ์ด ๋ค์ด์๋ ๋ชจ๋@babel/cli
: ํฐ๋ฏธ๋์์ ์ฝ๋๋ฅผ transpileํ ์ ์๋ ๋๊ตฌ์ฌ์ฉ์
babel
: ๋ฐ๋ฒจ ํธ์ถinput.js
: transpileํ๋ ค๋ jsํ์ผ(ES6+)--out-file
: babel์ ์ ๋ฌํ ์ต์ (ํ์ผ๋ก outputํ๋ ์ต์ )output.js
: ์ถ๋ ฅํ์ผ ์ด๋ฆ
@babel/preset-env
: ์ค์นํ๊ณ ์ถ์ plugin์ ๊ฐํธํ๊ฒ ์ฌ์ฉํ๊ธฐ๋จ ๊ตฌํ ๋ธ๋ผ์ฐ์ ์์ ์ฝ๋์ ๊ธธ์ด๊ฐ ๊ธธ์ด์ง ์ ์๋ค.
์ด๋๋ ์ํ๋ ๋ธ๋ผ์ฐ์ ๋ง ์ ํ์ ์ผ๋ก ์ง์ํ๋๋ก option์ ์ ํด์ฃผ์.
preset์ด ์์๋์๋, ํ๋ฌ๊ทธ์ธ๋ค์ ์ผ์ผ์ด npm๋ช ๋ น์ผ๋ก ์ค์น๋ฅผํ๊ณ , ํด๋น ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ๋ ๊ฒ์ .babelrcํ์ผ์ ์๋ ค์ผ ํ์๋๋ฐ
preset์ ํตํด์ npm ์ค์น์ babel ์ค์ ์ ํ๋ฒ๋ง ํ๋ฉด plugin๋ค์ด ์๋์ ์ผ๋ก ์ค์น๋๋ค
@babel/loader
:Webpack์ด ๋ชจ๋์ ๋ฒ๋ค๋งํ ๋ Babel์ ์ฌ์ฉํ์ฌ ES6+ ์ฝ๋๋ฅผ ES5 ์ฝ๋๋ก ํธ๋์คํ์ผ๋งํ๋ค.
๋ฐ๋ฒจ์ด ์นํฉ์ผ๋ก ๋์ํ ์ ์๋๋ก ์ค์
@babel/polyfill
:preset์ ์ด์ฉํ์ฌ ํ์ ๋ฒ์ ์ผ๋ก ํธ๋ ์คํ์ผํด๋, ๋ธ๋ผ์ฐ์ ๊ฐ ์ง์ํ์ง ์๋ ์ฝ๋๊ฐ ๋จ์์์ ์ ์์
๋์ฒดํ ๊ธฐ๋ฅ์ด ์๊ธฐ๋๋ฌธ.
๊ตฌํ ๋ธ๋ผ์ฐ์ ์์๋ ES6+์์ ์๋กญ๊ฒ ์ถ๊ฐ๋ ๊ฐ์ฒด๋ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ ์ค์น
ํ์ฌํ๊ฒฝ์์ ์ง์์ด ์๋๋ ์ํฉ์์ ๋์ฒด๊ธฐ๋ฅ์ ์ ๊ณต
์ค์ ํ์ผ(.babelrc ํน์ babel.config.js)
๊ถ์ฅ: babel.config.js
webpack ํ์ผ ์ค์ (webpack.config.js)
loader ์ค์ ํ๊ธฐ (์๋๋ด์ฉ rules์ ์ถ๊ฐ)
build๊ฒฐ๊ณผ, const๊ฐ var๋ก ์์ฑ๋์ด์๋๊ฒ ํ์ธ๋จ
Networkํญ - js ํ์ผ์์ ํ์ธ
๊ฒ์ํค์๋: imgElment
@babel/polyfill
์ ์ฉ์ดํ๋ฆฌ์ผ์ด์ ์์ ์ต์ด๋ก ํ๋ฒ๋ง ๋ก๋ ๋์ด์ผํ๋ค.
index.jsํ์ผ ํ๋๋ง ์ฌ์ฉํ์ผ๋๊น ์ฌ๊ธฐ์ import ํด์จ๋ค.
์๋ฒ ๋์ฐ๊ณ Network ํญ์์ ํ์ธํด๋ณด๊ธฐ!
๊ฒ์ํค์๋: polyfill
Last updated