๋ฐ๋ฒจ(Babel)
๐ก
๋ฐ๋ฒจ(Babel)์ ํธ๋์คํ์ผ๋ฌ(transpiler)๋ก, ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ๊ตฌ ํ์ค์ ์ค์ํ๋ ์ฝ๋๋ก ๋ฐ๊ฟ์ค๋๋ค.
- ๋ธ๋ผ์ฐ์ ๊ฐ ES6๋ ES7(์ต์ ํ์ค) ๋ธ๋ผ์ฐ์ ๊ฐ ์ดํดํ์ง ๋ชปํ๊ธฐ๋๋ฌธ์ ES5๋ก ๋ฐ๊ฟ์ฃผ๋ ๊ณผ์ ์ด ํ์
- ์ด ๊ณผ์ ์ ํด์ฃผ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ปดํ์ผ๋ฌ๊ฐ ๋ฐ๋ฒจ
- babel์ ์ฌ์ฉํ๋ค๊ณ ํด์ ๋ชจ๋ ์ต์ ์๋ฐ์คํฌ๋ฆฝํธ ํจ์๋ฅผ ๋ค ์ฌ์ฉํ ์ ์๋ ๊ฒ์ ์๋
- ๋ธ๋ผ์ฐ์ ์์ ์ง์ํ์ง ์๋ ํจ์๋ฅผ ๊ฒ์ฌํ๋ ์์
์ด ํ๋ก๊ทธ๋จ ์์์ ์งํ๋์ด์ผํจ
- ์ด ์ญํ ์ babel-polyfill์ด ๋ด๋น
๋ฐ๋ฒจ์ ์ฃผ์ ์ญํ
- ํธ๋ ์ค ํ์ผ๋ฌ
๋ฐ๋ฒจ์ ์ฝ๋๋ฅผ ์ฌ์์ฑํด์ฃผ๋ ํธ๋์คํ์ผ๋ฌ ํ๋ก๊ทธ๋จ
- ์ด๋ฅผ ์คํํ๋ฉด ๊ธฐ์กด ์ฝ๋๊ฐ ๊ตฌ ํ์ค์ ์ค์ํ๋ ์ฝ๋๋ก ๋ณ๊ฒฝ
- ๋ณ๊ฒฝ๋ ์ฝ๋๋ ์น์ฌ์ดํธ ํํ๋ก ์ฌ์ฉ์์๊ฒ ์ ๋ฌ
- ์นํฉ(webpack)๊ณผ ๊ฐ์ ๋ชจ๋ ํ๋ก์ ํธ ๋น๋ ์์คํ ์ ์ฝ๋๊ฐ ์์ ๋ ๋๋ง๋ค ์๋์ผ๋ก ํธ๋์คํ์ผ๋ฌ๋ฅผ ๋์
- ์ด๋ฐ ๊ณผ์ ์ด ์์ผ๋ฉด ๊ฐ๋ฐ์ด ๋๋ ์ฝ๋๋ฅผ ํ๋ฐ ํตํฉํ๋ ๋ฐ ์ด๋ ค์์ด ์์ ์ ์์
- ํด๋ฆฌํ
๋ณ๊ฒฝ๋ ํ์ค์ ์ค์ํ ์ ์๊ฒ ๊ธฐ์กด ํจ์์ ๋์ ๋ฐฉ์์ ์์ ํ๊ฑฐ๋, ์๋กญ๊ฒ ๊ตฌํํ ํจ์์ ์คํฌ๋ฆฝํธ
- ์๋กญ๊ฒ ํ์ค์ ์ถ๊ฐ๋ ํจ์๋ ๋ช ์ธ์ ๋ด ์ ์๋ฅผ ์ฝ๊ณ ์ด์ ๋ง๊ฒ ์ง์ ํจ์๋ฅผ ๊ตฌํํด์ผ ์ฌ์ฉํ ์ ์์
- . ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋งค์ฐ ๋์ ์ธ ์ธ์ด๋ผ์ ์ํ๊ธฐ๋ง ํ๋ฉด ์ด๋ค ํจ์๋ผ๋ ์คํฌ๋ฆฝํธ์ ์ถ๊ฐํ ์ ์์
- ๊ธฐ์กด ํจ์๋ฅผ ์์ ํ๋ ๊ฒ๋ ๊ฐ๋ฅ
- ๊ฐ๋ฐ์๋ ์คํฌ๋ฆฝํธ์ ์๋ก์ด ํจ์๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์์ ํด์ ์คํฌ๋ฆฝํธ๊ฐ ์ต์ ํ์ค์ ์ค์ํ ์ ์๊ฒ ์์ ํ ์ ์์
- ํด๋ฆฌํ(polyfill)์ ๋ง ๊ทธ๋๋ก ๊ตฌํ์ด ๋๋ฝ๋ ์๋ก์ด ๊ธฐ๋ฅ์ ๋ฉ๊ฟ์ฃผ๋(fill in) ์ญํ
- ์ฃผ๋ชฉํ ๋งํ ํด๋ฆฌํ ๋ ๊ฐ์ง
- core js โ ๋ค์ํ ํด๋ฆฌํ์ ์ ๊ณตํฉ๋๋ค. ํน์ ๊ธฐ๋ฅ์ ํด๋ฆฌํ๋ง ์ฌ์ฉํ๋ ๊ฒ๋ ๊ฐ๋ฅ
- polyfill.io โ ๊ธฐ๋ฅ์ด๋ ์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ ์ ๋ฐ๋ผ ํด๋ฆฌํ ์คํฌ๋ฆฝํธ๋ฅผ ์ ๊ณตํด์ฃผ๋ ์๋น์ค
- ์ฃผ๋ชฉํ ๋งํ ํด๋ฆฌํ ๋ ๊ฐ์ง
.babelrc
๐ก .babelrc
Babel ์ปดํ์ผ๋ฌ์ ์ค์ ํ์ผ
- JSON ํ์ ๋๋ JavaScript ๋ชจ๋ ํ์์ผ๋ก ์์ฑ
- Babel์ ํ๋ฌ๊ทธ์ธ๊ณผ ํ๋ฆฌ์ ์ ๊ตฌ์ฑํ๋ ์ค์ ์ ๋ณด๊ฐ ํฌํจ
- ํ๋ฌ๊ทธ์ธ์ ๊ฐ๋ณ ๋ณํ ์์ ์ ์ํํ๊ณ , ํ๋ฆฌ์ ์ ํน์ ํ๊ฒฝ ๋๋ ํ๋ซํผ์ ๋์์ผ๋ก ํ ๋ฏธ๋ฆฌ ์ ์๋ ๋ณํ ์ค์ ์ ์ ๊ณต </aside>
1. presets
{
"presets": [
"@babel/preset-env",
"@babel/preset-react"
]
}
- presets ์์ฑ์ ๋ฏธ๋ฆฌ ์ ์๋ ๋ณํ ์ค์ ๊ทธ๋ฃน์ ์ง์
- ํ๋ฆฌ์ ์ ์ผ๋ จ์ ํ๋ฌ๊ทธ์ธ ์งํฉ์ผ๋ก ๊ตฌ์ฑ๋์ด ํน์ ํ๊ฒฝ์ด๋ ํ๋ซํผ์ ๋์์ผ๋ก ํ๋ ์ผ๋ฐ์ ์ธ ๋ณํ์ ์ํํ๋ ๋ฐ ์ฌ์ฉ
2. plugins
{
"plugins": [
"@babel/plugin-transform-arrow-functions",
"@babel/plugin-transform-classes"
]
}
- ๊ฐ๋ณ์ ์ธ ๋ณํ ์์ ์ ์ํํ๋ ํ๋ฌ๊ทธ์ธ์ ์ง์
- ํ๋ฌ๊ทธ์ธ์ ๋ณํํ ํน์ ๊ธฐ๋ฅ ๋๋ ๋ฌธ๋ฒ์ ๋์์ผ๋ก ํ๋ฉฐ, ์์ ๋ง์ ๋ณํ ๊ท์น์ ์ ์
3. ovverrides
{
"presets": [
"@babel/preset-env"
],
"overrides": [
{
"test": "./src/app",
"presets": [
"@babel/preset-react"
]
}
]
}
- ํน์ ํ์ผ ๋๋ ๋๋ ํ ๋ฆฌ์ ๋ํ ์ถ๊ฐ์ ์ธ ๋ณํ ์ค์ ์ ์ ์ํ๋ ๋ฐ ์ฌ์ฉ
- ์ด๋ฅผ ํตํด ํ๋ก์ ํธ์ ์ผ๋ถ JavaScript ํ์ผ์ ๋ํด ๋ค๋ฅธ ๋ณํ ๊ท์น์ ์ ์ฉ
Reference
'Development' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์นํฉ(Webpack) (0) | 2023.06.15 |
---|---|
[axios] axios 2 (0) | 2023.01.27 |
[axios] axios 1 (0) | 2023.01.21 |
[npm].npmrc (0) | 2023.01.19 |
๋๊ธ