Babel 7 마이그레이션 과정에서 겪은 preset 문제

문제 상황

회사 프로젝트의 Babel을 6에서 7로 업그레이드하는 작업을 진행했다. 공식 문서를 보고 패키지를 업데이트했는데 빌드가 실패했다.

Error: Cannot find module 'babel-preset-env'

원인

Babel 7부터 모든 공식 패키지가 @babel 스코프로 변경되었다. 기존에 babel-preset-env였던 것이 @babel/preset-env로 바뀌면서 .babelrc 설정도 함께 수정해야 했다.

해결 과정

먼저 패키지를 모두 새 네이밍으로 교체했다.

npm uninstall babel-preset-env babel-preset-react babel-preset-stage-2
npm install --save-dev @babel/preset-env @babel/preset-react

.babelrc 파일도 수정했다.

{
  "presets": [
    ["@babel/preset-env", {
      "targets": {
        "browsers": ["last 2 versions"]
      }
    }],
    "@babel/preset-react"
  ],
  "plugins": [
    "@babel/plugin-proposal-class-properties"
  ]
}

stage preset은 Babel 7에서 공식적으로 제거되어 필요한 plugin만 개별 설치했다.

추가 작업

Webpack 설정에서 babel-loader를 사용 중이었는데, 이것도 버전을 8로 올려야 Babel 7과 호환됐다. 그냥 넘어갔다가 런타임 에러를 만났다.

npm install --save-dev babel-loader@8

전체 마이그레이션에 반나절 정도 소요됐다. 빌드 속도는 체감상 약간 빨라진 것 같다.

Babel 7 마이그레이션 과정에서 겪은 preset 문제