๐ก webpack๊ณผ babel์ด ์๋ก ํน๋ณํ ๊ด๊ณ๊ฐ ์๋ ๊ฒ์ ์๋์ง๋ง webpack์ ์ค์ ํ ๋ ์ฃผ๋ก babel์ ์ถ๊ฐํ๋ฏ๋ก ์ค๋ช
ํ๊ณ ๋์ด๊ฐ๊ฒ ์ต๋๋ค.
Babel์ JavaScript ์ปดํ์ผ๋ฌ์
๋๋ค.
compiler?
๐ In computing, a compiler is a computer program that translates computer code written in one programming language into another language
- ํ์ด์ ์ค๋ช
ํ์๋ฉด, ์ฌ๋์ด ์ฝ๊ธฐ ํธํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์ปดํจํฐ๊ฐ ์ฝ๊ธฐ ํธํ ์ฝ๋๋ก ๋ฐ๊ฟ์ฃผ๋ ๊ฒ์ ์ปดํ์ผ๋ฌ๋ผ๊ณ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด,
- ์๋์ ๊ฐ์ด ๋ณ์์ ๊ฐ์ ํ ๋นํ๋ ์ฝ๋๋ ์ฌ๋์ด ์ฝ๊ธฐ ํธํ์ง๋ง, ์ปดํจํฐ๋ ์์๋ฃ๊ธฐ ์ด๋ ค์ ํฉ๋๋ค. ์ต์ข
์ ์ผ๋ก๋ 01010011์ ๊ฐ์ ์ด์ง๋ฒ์ผ๋ก๋ ๋ณํ ๋์ด์ผ ์ปดํจํฐ๊ฐ ์์๋ฃ์ต๋๋ค.
a = 1
- ์ด๋ ๊ฒ ์ฌ๋์ด ์ฝ๊ธฐ ํธํ ๊ณ ๊ธ์ธ์ด์์ ์ปดํจํฐ๊ฐ ์ต์ํด ํ๋ low level ์ธ์ด๋ก ๋ณํํ๋ ๊ฒ์ ์ปดํ์ผ๋ฌ๋ผ๊ณ ์ฃผ๋ก ๋งํฉ๋๋ค.
- ์ปดํ์ผ ์ธ์ด๋ ๋ฐ๋ก ์์ต๋๋ค. c, c++, java ๋ฑ์
๋๋ค.
- JavaScript๋ Python์ ์ปดํ์ผ ์ธ์ด๊ฐ ์๋๋ฉฐ, ์ฌ๋์ด ์ด ๋๋ก ์ปดํจํฐ๊ฐ ํด์ํ๋ "์ธํฐํ๋ฆฌํฐ ์ธ์ด"๋ผ๊ณ ๋ถ๋ฆ
๋๋ค.
๋ฐ๋ฒจ์ด ํ์ํ ์ด์ ?
Babel์ JavaScript ์ปดํ์ผ๋ฌ์ด๋ค.
- JavaScript๋ ์ปดํ์ผ ์ธ์ด๊ฐ ์๋๋ฐ?
- Babel์ ๋ฐฉ๊ธ ๋์จ ๋ฐ๋๋ฐ๋ํ ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ์ ์ ์ด๋ ๋ธ๋ผ์ฐ์ ์๋ ์ฌ์ฉํ ์ ์๋๋ก ES5 ๋ฒ์ ์ผ๋ก ๋ณํํด์ค๋๋ค. ์ฆ, ๋ธ๋ผ์ฐ์ ๋ ์์ง ์๋ก์ด ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ์ ์ ๋ง์ดํ ์ค๋น๊ฐ ์ ๋๋๋ฐ, ๊ฐ๋ฐ์๋ ์๋ก์ด ๋ฒ์ ์ผ๋ก ํจ์จ์ ์ธ ๋ฌธ๋ฒ์ ๋ฏธ๋ฆฌ ์ฐ๋ฉด ์ข์ผ๋๊น ์ด๋ฐ Babel์ด ๋์จ ๊ฒ์
๋๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ณํํ๋ ๊ฒ์ด์ง๋ง, ๋์ ๋ฒ์ ์์ ๋ฎ์ ๋ฒ์ ์ผ๋ก ๋ฐ๊ฟ์ฃผ๊ณ , ๊ทธ ๋ฎ์ ๋ฒ์ ์ ๋ธ๋ผ์ฐ์ ๊ฐ ํด์ํ ์ ์๋ ๋ฒ์ ์ด๋ฏ๋ก ์ปดํ์ผ์ด๋ผ๋ ๋จ์ด๋ฅผ ์ฐ๋ ๊ฒ ๊ฐ์ต๋๋ค. ํ์ง๋ง, c, c++, java์๋ง ์ฌ์ฉํ๋ ์ปดํ์ผ์ด๋ผ๋ ๋จ์ด์ ์ต์ํ ์ฌ๋์ ์ปดํ์ผ๋ฌ ๋์ "ํธ๋์คํ์ผ๋ฌ"๋ผ๊ณ ํ๋ ์ฌ๋๋ ์์ต๋๋ค.
- ์ฐ๋ฆฌ๊ฐ create react app์ผ๋ก ๊ฐ๋ฐ์ ํ ๋ ์์ง ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฐ์๋๋ฆฌ์ง ๋ชปํ๋ ๊ฐ์ข
์ต์ ๋ฉ์๋ ๋ค์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. create react app์์๋ ์ด๋ฏธ Babel ์ค์ ์ด ๋์ด์๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ ๋ฒ์ ์ ๊ณ ๋ คํ์ง ์๊ณ ๋ง์๋๋ก ๊ฐ๋ฐํ ์ ์์๋ ๊ฒ์ด์ฃ !
๋ฐ๋ฒจ๊ณผ ๊ด๋ จ๋ ํ์ module
- babel-loader: ๋ฐ๋ฒจ๊ณผ ์นํ์ด ์ด๋ป๊ฒ ๋์ํ๋์ง
- @babel/core: babel๋ก ์ปดํ์ผํด์ ๊ฒฐ๊ณผ๋ฌผ ํ์ผ์ด ๋์ค๋๋ก babel๊ด๋ จํ ํต์ฌ ๋ชจ๋
- @babel/preset-env: ES2015?6?7 ๋ฑ ์ด๋ค ๋ฒ์ ์ ์ธ์ง์ ๊ดํ ๋ชจ๋
- @babel/preset-react: jsx ๋ฅผ js๋ก!