Babel 기초 개념 정리

2022. 10. 3. 19:12·프론트엔드/개발 환경

인프런 프론트엔드 개발환경의 이해와 실습 강의(Babel)를 듣고 정리해봤다.

역할

ES6+ 버전 이상의 자바스크립트나 JSX, 타입스크립트 코드를 하위 버전의 자바스크립트 코드로 변환시켜 IE나 다른 브라우저에서 동작할 수 있도록 트랜스파일 한다.

동작

  1. 파싱 : 코드 -> AST(추상 구문 트리)
  2. 변환 : 실제로 코드를 변경
  3. 출력

바벨은 파싱과 출력을 담당한다. 변환 작업은 플러그인을 활용해 처리한다.

플러그인

코드를 변환하는 작업을 한다.

자주 사용하는 플러그인

  • plugin-transform-block-scoping : let,const -> var
  • plugin-transform-arrow-functions : 화살표 함수 -> function
  • plugin-transform-strict-mode : use strcit

프리셋

여러가지 플러그인을 세트로 모아놓은 것

  • preset-env : ECMAScript2015+를 변환
  • preset-flow
  • preset-react
  • preset-typescript

preset-env

타겟 브라우저 설정

// babel.config.js
module.exports = {
  presets: [
    [
      "@babel/preset-env",
      {
        targets: {
          chrome: "79", // 크롬 79까지 지원하는 코드를 만든다
        },
      },
    ],
  ],
}

폴리필

// babel.config.js:
module.exports = {
  presets: [
    [
      "@babel/preset-env",
      {
        useBuiltIns: "usage", // 폴리필 사용 방식 지정
        corejs: {
          // 폴리필 버전 지정
          version: 3,
        },
      },
    ],
  ],
}

웹팩과 통합하기

웹팩설정에 babel-loader를 사용한다.

// webpack.config.js:
module.exports = {
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        loader: "babel-loader", // 바벨 로더를 추가한다
      },
    ],
  },
}

정리

바벨 config 설정은 babel.config.js에서 한다.
보통 플러그인들의 모음인 프리셋들을 사용해 설정을 해준다.
preset-env는 타겟 브라우져 설정, polyfill 설정이 가능하다.
babel이 변환하지 못하는 코드는 폴리필을 활용해 처리한다.
webpack에 babel-loader를 추가함으로써 웹팩과 통합할 수 있다.

저작자표시 (새창열림)

'프론트엔드 > 개발 환경' 카테고리의 다른 글

CRA 분석하기  (1) 2022.12.20
나만의 react boilerplate 만들기 - (2) npx, 배포  (0) 2022.12.08
나만의 react boilerplate 만들기 - (1) 환경 설정  (0) 2022.12.02
린트, Prettier 기초 개념 정리  (0) 2022.10.03
Webpack 기초 개념 정리  (0) 2022.10.03
'프론트엔드/개발 환경' 카테고리의 다른 글
  • 나만의 react boilerplate 만들기 - (2) npx, 배포
  • 나만의 react boilerplate 만들기 - (1) 환경 설정
  • 린트, Prettier 기초 개념 정리
  • Webpack 기초 개념 정리
정현우12
정현우12
  • 정현우12
    정현우의 개발 블로그
    정현우12
  • 전체
    오늘
    어제
    • 분류 전체보기 (79)
      • 프론트엔드 (56)
        • JavaScript, TypeScript (12)
        • 스타일링 (1)
        • React (13)
        • Next.js (4)
        • 개발 환경 (9)
        • 테스트 (3)
        • 성능 최적화 (11)
        • 함수형 프로그래밍 (2)
        • 구조 (1)
      • 프로젝트 회고 (23)
        • 이미지편집기 개발 (7)
        • 엑셀 다운로드, 업로드 공통 모듈 개발 (4)
        • 사용자 매뉴얼 사이트 개발 (3)
        • 통계자동화 솔루션 개발 (1)
        • 엑셀 편집기 개발 (5)
        • API 플랫폼 (1)
        • 콜센터 솔루션 OB 캠페인 (1)
        • AI 스튜디오 (1)
      • 백엔드 (0)
  • 블로그 메뉴

    • 홈
    • 포트폴리오
    • 태그
  • 인기 글

  • 태그

    이미지 편집기
    커스텀 훅
    엑셀 에디터
    사용자 매뉴얼 사이트
    로딩 성능 최적화
    엑셀
    JavaScript
    회고
    React
    라이브러리 선정
    memoization
    Github Actions
    Next.js
    웹 성능 최적화
    TypeScript
    webpack
    useReducer
    React-boilerplate
    frontend
    렌더링 성능 최적화
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
정현우12
Babel 기초 개념 정리
상단으로

티스토리툴바