더북(TheBook)

Note Babel ES6 preset

IE9 같은 구형 브라우저를 지원해야 하는 불운한 상황에도 불구하고, 미래의 표준인 ES6+/ES2015+를 사용하고자 한다면, babel-preset-es2015(www.npmjs.com/package/babel-preset-es2015) 트랜스파일러를 추가할 수 있다. 이 라이브러리를 이용하면 ES6 코드를 ES5 코드로 변환할 수 있다. 먼저 다음과 같이 라이브러리를 설치한다.

$ npm i babel-preset-es2015 --save-dev

다음으로, Babel의 presets 항목에 react와 함께 추가한다.

{
  "presets": ["react", "es2015"]
}

구형 브라우저 지원이 필요하지 않다면 ES2015 트랜스파일러를 사용하는 것을 추천하지 않는다. 여기에는 몇 가지 이유가 있다. 첫째, ES6 코드보다 최적화가 부족한 오래된 ES5 코드를 실행하게 된다. 둘째, 의존성이 늘어나고 더 복잡한 코드가 된다. 마지막으로, 만약 대부분의 사람이 브라우저에서 ES5 코드를 계속해서 실행한다면 브라우저 개발팀이나 자바스크립트 개발자가 ES6를 신경 쓰겠는가? 구형 브라우저 지원이 필요하다면 TypeScript(www.typescriptlang.org), 또는 ClojureScript(http://clojurescript.org), CoffeeScript(http://coffeescript.org) 등을 사용하는 편이 더 나을 수도 있다.9

 

부록 A의 내용을 반복하려면 package.json 파일에 다음과 같이 presets 항목을 작성해야 한다.

{
  ...
  "babel": {
      "presets": ["react"]
  },
  ...
}

 

9   역주 IE9 미만의 브라우저에서 Babel을 사용하려면 loose mode 설정, babel-plugin-transform-es3-member-expression-literals, babel-plugin-transform-es3-property-literals, es3ify-loader 같은 도구도 생각해볼 수 있다. 그러나 React의 경우 버전 15 이후에는 IE8 지원을 중단했으므로 이전 버전을 사용해야 하는 등 여러 가지 어려움이 있다(https://reactjs.org/blog/2016/01/12/discontinuing-ie8-support.html).

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.