Выбор предустановки Babel 6, чтобы заставить Babel работать

Я использую Babel 6 с подключаемым модулем React и следую инструкциям документации по настройке процесса переноса. Я читал, чтобы заставить реагировать работать, мне нужно использовать es2015 и реагировать preset. Первоначально все работало нормально, используя эти оба пресета.

Но когда я скопировал пример кода с веб-сайта Babel (Инициализаторы свойств) для тестирования новых языковых функций. У меня возникают ошибки при переносе кода, приведенного ниже, и поэтому транспиляция кода больше невозможна.

// The ES6+ way
class Video extends React.Component {
    static defaultProps^= { // this is line 42 and ^ the column where error occurs
        autoPlay: false,
        maxLoops: 10,
    }

    static propTypes = {
        autoPlay: React.PropTypes.bool.isRequired,
        maxLoops: React.PropTypes.number.isRequired,
        posterFrameSrc: React.PropTypes.string.isRequired,
        videoSrc: React.PropTypes.string.isRequired,
    }

    state = {
        loopsRemaining: this.props.maxLoops,
    }
}

Warning: [...]components/sectorList.js: Unexpected token (42:24) Use --force to continue.

После долгой отладки я решил эту проблему, загрузив также предустановку stage-0 для babel. Но это было просто везение.

Итак, мой вопрос, на который я не могу найти ответ:

Как правильно определить правильную коллекцию предустановок.

Или неожиданный токен... предупреждение в основном является уведомлением об отсутствующем пресете?

Спасибо за любую помощь


person Bernhard    schedule 07.12.2015    source источник


Ответы (1)


Если вы посмотрите на страницы Babel для предустановки, там перечислены все включенные преобразования. В этом случае вы используете свойства класса, которые в настоящее время находятся на этапе 1 и поэтому включены в этап 1 пресет.

В ES2015 вы должны использовать конструктор для установки значений по умолчанию.

person Matthias Winkelmann    schedule 07.12.2015
comment
Итак, то, что я сделал с помощью stage-0 рядом с es-2015, можно перенести с помощью предустановки, но это недействительно? Больше микс из разных стандартов? - person Bernhard; 09.12.2015
comment
es2015 — это «следующий» стандарт, основные браузеры которого сейчас поддерживают около 80%. stage-0 (-1, -2, -3) - это сборники предложений для будущего развития. Я считаю, что от стадии 0 до согласованного стандарта требуется около двух лет. Так что es2015 и stage-0 не противоречат друг другу. - person Matthias Winkelmann; 09.12.2015
comment
Спасибо за ваш комментарий, который действительно помог мне лучше понять, как работает Babel. - person Bernhard; 10.12.2015