Babel Basic - ChoDragon9/posts GitHub Wiki
Babel
- ๋ค์ ์ธ๋์ ECMAScript(ECMA 262)๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํ๋ค.
- ์ฌ์ฉ์๊ฐ ์ง์ ํ ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๋ ๋ฒ์ ์ผ๋ก ์ปดํ์ผ ๊ฒฐ๊ณผ ์ฝ๋๋ฅผ ๋ง๋ค์ด ์ค๋ค.
ES2015 and beyond ์ค์น ๋ฐฉ๋ฒ
npm i babel-preset-dev -D
babel-preset-env๋ es2015, es2016, es2017 ๋ฒ์ ์ ๋ชจ๋ ์ง์ํ๋ค.
์ต์ ์ ์ค์ ํ์ง ์๊ณ env๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ ๊ฒฝ์ฐ babel-preset-latest์ ๋์์ด ๋์ผํ๋ค.
.babelrc์ ํ๊ฒฝ์ ์ค์ ํ๊ฒ ๋๋ฉด ํด๋นํ๋ ๊ธฐ๋ฅ์ ์ปดํ์ผ ํด์ค๋ค.
{
"presets": [
["env", {
"targets": {
"browsers": ["last 2 versions", "safari >= 7"]
}
}]
]
}
์ ์ค์ ์ ์๋ฏธ๋ ๊ฐ ๋ธ๋ผ์ฐ์ ์ ์ต์ 2๊ฐ์ ๋ฒ์ ๊ณผ ์ฌํ๋ฆฌ ๋ฒ์ ์ด 7์ด๊ฑฐ๋ ํฐ ๋ฒ์ ์์ ๋์ํ๋ ์ฝ๋๋ฅผ export ํด๋ฌ๋ผ๋ ์๋ฏธ์ด๋ค.
babel์ browserslist ํ์๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ธ๋ผ์ฐ์ ์ง์ ๋ฒ์๋ browserslist๋ฅผ ์ฐธ๊ณ ํด์ ์์ฑํ๋ค.
์ฃผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ ์ ๋ฆฌํ๋ฉด
- "last 2 versions" : ๊ฐ ๋ธ๋ผ์ฐ์ ์ ์ต์ ๋ ๋ฒ์
- " > 5%" : ์ ์ธ๊ณ ์ฌ์ฉ๋ ํต๊ณ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฌ์ฉ, 5% ์ด๊ณผํ๋ ๋ฒ์ ์ฌ์ฉ, >= <= < ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅ
- "not ie <= 8" : IE8 ์ดํ ๋ฒ์ ์ ์ธ
Babel Polyfill
babel์ ๋ฌธ๋ฒ์ ์ธ ๋ถ๋ถ(ํ์ดํ ํจ์ ๊ฐ์) ์ปดํ์ผ ํ๊ธฐ ๋๋ฌธ์ ์๋ก์ด ์๋ฐ์คํฌ๋ฆฝํธ API๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ babel-polyfill์ ์ค์นํด์ผ ํ๋ค. babel ์ฌ์ดํธ์์๋ Promise, WeakMap, Array.from, Object.assign, Array.prototype.includes ์ ๊ฐ์ built-in ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ค๋ฉด ์ค์นํ๋ผ๊ณ ๊ฐ์ด๋ ํ๊ณ ์๋ค.
npm i babel-polyfill -D