ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๐Ÿ”จ Babel

Babel ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€ (https://babeljs.io/)๋ฅผ ์—ด๋ฉด Babel is a JavaScript compiler๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
์ฆ‰, Babel์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ปดํŒŒ์ผ๋Ÿฌ๋กœ, ์ตœ์‹  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ•(ES6, ES7, ES8)์œผ๋กœ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ €์—์„œ๋„ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋Š” ES5๋ฒ„์ „์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋„๊ตฌ์ด๋‹ค.

๐Ÿ’ป Babel ์„ค์น˜

1. ํ„ฐ๋ฏธ๋„์— npm i -D @babel/core @babel/preset-env ์ž…๋ ฅ

2. ๋ฃจํŠธ๊ฒฝ๋กœ์— .babelrc.js ํŒŒ์ผ ์ƒ์„ฑ ํ›„ ๋‹ค์Œ ์ฝ”๋“œ ์ €์žฅ

module.exports = {
      presets: ['@babel/preset-env']
  }

์ด๋ ‡๊ฒŒ ์™„๋ฃŒ๋˜๋ฉด ๋ชจ๋“  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋ฐ”๋ฒจ์„ ํ†ตํ•ด es5๋ฌธ๋ฒ•์œผ๋กœ ๋ณ€๊ฒฝ๋˜์–ด ๋™์ž‘ํ•˜๊ฒŒ ๋œ๋‹ค.

3. package.json ํŒŒ์ผ์— ๋‹ค์Œ ๋‚ด์šฉ ์ถ”๊ฐ€

"browserslist": [
      "> 1%",
      "last 2 versions"
      ]
   }

postcss๋ฅผ ์ ์šฉํ•œ ์ ์ด ์žˆ๋‹ค๋ฉด ์ด๋ฏธ ์žˆ์„ ๋ถ€๋ถ„์ด๋ฏ€๋กœ ์—†๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค.

4. ํ„ฐ๋ฏธ๋„์— npm run dev ์ž…๋ ฅ

ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์˜ค๋ฅ˜ ์—†์Œ์„ ํ™•์ธํ•˜์ž

5. ํ„ฐ๋ฏธ๋„์— npm i -D @babel/plugin-transform-runtime ์ž…๋ ฅ

babel์€ async await ๋ฌธ๋ฒ•์ด ๊ธฐ๋ณธ์„ค์ •๋งŒ์œผ๋กœ๋Š” ์ œ๊ณต๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

6. babelrc.js ํŒŒ์ผ์— ๋‹ค์Œ plugins ๋‚ด์šฉ ์ถ”๊ฐ€

module.exports = {
      presets: ['@babel/preset-env'],
      plugins: [
      ['@babel/plugin-transform-runtime']
      ]
  }

7. ์ž˜ ์ ์šฉ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด main.js ํŒŒ์ผ์— ๋‹ค์Œ์„ ์ถ”๊ฐ€

async function test() {
      const promise = Promise.resolve(123)
      console.log(await promise)
  }
  test()

์ฝ˜์†”์— 123์ด ๋‚˜์˜จ๋‹ค๋ฉด async await๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋Œ์•„๊ฐ€๋Š” ๊ฒƒ์ด๋‹ค.

๋Œ“๊ธ€