[React] ๋ฐ”๋ฒจ (Babel)

๐Ÿ“„ ๋ฐ”๋ฒจ

๋ฐ”๋ฒจ์€ ์ตœ์‹  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ•์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ํ™˜๊ฒฝ์—์„œ๋„ ์ตœ์‹  ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์ž…๋‹ˆ๋‹ค.

// Babel Input: ES2015 arrow function
[1, 2, 3].map((n) => n + 1);

// Babel Output: ES5 equivalent
[1, 2, 3].map(function (n) {
  return n + 1;
});

๋ฆฌ์•กํŠธ์—์„œ๋Š” JSX ๋ฌธ๋ฒ•์„ createElementํ•จ์ˆ˜๋กœ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ”๋ฒจ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“„ ๋ฐ”๋ฒจ ์„ค์น˜

npm install @babel/core @babel/cli @babel/preset-react
  • @babel/core: ๋ฐ”๋ฒจ์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํŒจํ‚ค์ง€
  • @babel/cli: cli์—์„œ ์‚ฌ์šฉํ•  ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ๋“ค์–ด์žˆ๋‹ค.
  • @babel/preset-react: ๋ฆฌ์•กํŠธ๋ฅผ ์œ„ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ๋ชจ์•„๋†“์€ ๊ฒƒ
npx babel --watch src --out-dir , --presets @babel/preset-react

src๋””๋ ‰ํ† ๋ฆฌ์˜ ๋ชจ๋“  JSํŒŒ์ผ์„ ๋ถ„์„ํ•˜๊ณ  ๋ณ€ํ™˜ํ•œ ๋‚ด์šฉ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํ•œ๋ฒˆ ์ปดํŒŒ์ผ ํ•˜๊ณ  ๋๋‚˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํŒŒ์ผ์ด ๋ฐ”๋€” ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ์ปดํŒŒ์ผ์„ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“„ Plugins

๋ฐ”๋ฒจ์—๋Š” ํ”„๋ฆฌ์…‹๊ณผ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์žˆ๋‹ค.

  • ํ”Œ๋Ÿฌ๊ทธ์ธ(Prugins): ์ฝ”๋“œ๋ฅผ ๋ณ€ํ™˜ํ•˜๊ฒŒ ํ•˜๋Š” ์ž‘์€ jsํ”„๋กœ๊ทธ๋žจ
  • ํ”„๋ฆฌ์…‹(Preset): ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋ชจ์•„๋†“์€ ๊ฒƒ.

ํ”Œ๋Ÿฌ๊ทธ์ธ์™€ ํ”„๋ฆฌ์…‹์€ ๊ณต์‹์œผ๋กœ ์ •ํ•ด์ง„ ๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๊ณ  ์ง์ ‘ ์ž์‹ ๋งŒ์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ž‘์„ฑํ•˜์—ฌ ๋ณ€ํ™˜์„ ์ฝ”๋“œ์— ์ ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

์ถœ์ฒ˜

Leave a comment