По умолчанию BabelJS не транспилирует анонимную функцию синтаксиса ES6?

Я использую Бабель 6.1.2

$ babel --version
6.1.2 (babel-core 6.1.2)

Когда я компилировал код ES6 с анонимной функцией, я обнаружил, что код вообще не транспилируется в синтаксис ECMAScript 5.

$ echo "()=>1" | babel 
() => 1;

У кого-нибудь есть идеи по этому поводу? Спасибо!


person Hanfei Sun    schedule 10.11.2015    source источник
comment
Кажется, этот вопрос задают каждый день хотя бы раз. Пожалуйста, воспользуйтесь поиском!   -  person Felix Kling    schedule 10.11.2015


Ответы (2)


Из официального сообщения в блоге о выпуске 6.0 (https://babeljs.io/blog/2015/10/29/6.0.0/):

Поскольку Babel нацелен на то, чтобы быть платформой для инструментов JavaScript, а не транспилером ES2015, мы решили включить все подключаемые модули. Это означает, что когда вы устанавливаете Babel, он больше не будет транспилировать ваш код ES2015 по умолчанию.

Вам понадобятся плагины или пресеты, чтобы действительно транспилировать ваш код.

https://babeljs.io/docs/plugins/#presets

person Timon    schedule 10.11.2015

Нашел способ:

Установить плагин

$ npm install babel-plugin-transform-es2015-arrow-functions

Добавьте следующее в .babelrc

{
  "plugins": ["transform-es2015-arrow-functions"]
}

Тогда это работает

$ echo "() => 1" | babel --plugins transform-es2015-arrow-functions 
(function () {
  return 1;
});
person Hanfei Sun    schedule 10.11.2015