Ответы:
Предустановки сцены Babel приравниваются к процессу TC39 и различным состояниям каждого предложения для потенциального изменения языка. Они включают реализации и полифиллы для всех предлагаемых изменений на этом этапе.
Все, что сейчас Stage-0
есть, - это Strawman, а не ES6. Это будущий Javascript, и нет уверенности, что он когда-либо войдет в какую-либо официальную спецификацию ECMAScript.
Пожалуйста, не устанавливайте простоstage-0
так, чтобы он работал, не понимая, к каким последствиям это приведет.
Пресет Babel, который содержит только функции ES6, preset-es2015
stage-0
но отнюдь не полностью безопасным от изменения или даже полного устаревания (см вызов конструктора предложение , которое было снято после того, как 1 этап). Но то же самое можно сказать о любом этапе, кроме этапа 4 (т.е. завершенного).
preset-es2015
на babel-preset-node6
эти дни, если используете Node 6 или лучше.
babel-preset-env
который может быть нацелен на любую среду!
babel-preset-env
ВМЕСТО babel-preset-es2015
. babel-preset-es2015
почти устарело
Как в основном описано другими ответами. Этап 4 является наиболее стабильным, а этап 0 - наиболее опасным. Вот небольшая разбивка на высоком уровне для 5 этапов из предыдущих ответов и документации. Я добавляю это, потому что, когда я подошел к этому, я ожидал более подробного разбора того, что представляет собой каждый этап:
Готов к включению в стандарт ECMAScript, прошел тестирование и будет частью следующей версии
Включает полный текст спецификации и включает плагины, которые в основном были протестированы и предоставлены с отзывами. Решение готово, и все дальнейшие изменения основаны на опыте внедрения.
Дальнейшая поддержка плагинов завершена в максимально возможной степени. Требования к ним выполняются в основном с постепенными изменениями. Ожидается, что семантика и api будут полными. Скорее всего, он станет частью спецификации.
Каждый уровень включает в себя, тогда как 4 включает 3 включает 2 и так далее ... Я надеюсь, что это суммирование поможет кому-то в будущем.
Этапы представляют собой этапы, как определено процессом TC39, который превращает функции из сумасшедших, но полезных идей в принятые стандарты, такие как ES6. Процесс занимает некоторое время, так как каждый угловой случай необходимо обсудить, обдумать, протестировать, заполнить полифиллами, еще немного обсудить и т. Д. То есть это орган стандартизации. Цель состоит в том, чтобы сказать «ES6» было полное и законченное значение, так же как и «ES5».
На практике требования к вашему проекту могут варьироваться от использования проверенных и верных до экспериментов с очень удобными, хотя и туманными языковыми функциями. Возможно, вы захотите начать с этих ссылок:
Обзор процесса TC39 : он включает в себя изящную диаграмму того, что означают этапы и как функции переходят от этапа к этапу. Ниже представлен обзор TC39.
Активные предложения : краткий обзор того, на каком этапе находятся определенные предложения. Он также включает ссылки на завершенные, неактивные и нулевые предложения. Сегодня, в апреле 2017 года, поля общедоступных классов находятся на этапе 2, что означает, что они точно описаны и рецензенты назначены, но не полностью проверены.
Предустановленный пакет Babel для этапа 3 : страница плагина со ссылками на Git и NPM для всех предложений этапа 3. По сути, этот подключаемый модуль извлекает набор пакетов, которые теоретически полифицируют текущие предложения на этапе 3 TC39. На практике могут возникать ошибки. Кроме того, вы можете найти аналогичные. Аналогично, это ссылки на страницы плагинов для Этапа 2 и ниже. Эти страницы будут ссылаться на пакеты, включающие как предложения этапа 3, так и менее стабильные предложения.
Предустановка Babel 'env' : эта предустановка Babel поддерживает завершенные предложения, выбирая правильные пакеты, необходимые для поддержки этих функций в известной среде. Например, для локального node
исполняемого файла требуется меньше подключаемых модулей, чем для более старого браузера. Это может быть плагин "stage-4", который поддерживает утвержденные будущие функции.
Таким образом, вам нужно иметь дело с этими предварительными функциями, только если вы их используете. Если вам все же нужно их использовать, выберите наибольшее количество ступеней, на которых есть то, что вам нужно. Если вы просто хотите, чтобы вокруг кулера для воды обсуждалась игрушечная инсталляция с сумасшедшими функциями, возьмите стадию 0.
Это лучшая отправная точка для понимания. Что такое пресеты Babel
Отрывок из ссылки:
Этап 0 - Strawman: только идея, возможный плагин Babel.
Этап 1 - Предложение: над этим стоит поработать.
2 этап - Эскиз: начальная спец.
Этап 3 - Кандидат: полная спецификация и начальные реализации браузера.
Этап 4 - Завершено: будет добавлено в следующий годовой выпуск
Общая картина :
preset
в терминах babel называются a . И каждый пресет содержит плагины с разным уровнем риска.preset-0
Это означает, что у него есть плагины для функций, которые являются очень экспериментальными и, следовательно, имеют высокий риск дойти до окончательной спецификации. Это похоже на идею, которая пришла к разработчику, что в Javascript должна быть определенная функция, и он проделал некоторую работу, чтобы внести ее в процесс предложения TC-39.preset-1
Он содержит плагины для идей, принятых TC-39, и они считают, что над этим стоит поработать.preset-2
Плагины для функций, для которых готов первоначальный черновик. И так продолжается ..Таким образом, может случиться так, что функция на Этапе 0 через некоторое время достигнет Этапа 2 и в конечном итоге появится в следующем выпуске Javascript еще некоторое время спустя.
Следовательно, в каждой версии этих пресетов Babel вы можете найти разные наборы плагинов. Также может случиться так, что функция на этапе 0 претерпела некоторые изменения и внесла критические изменения в то, как она функционирует. И он достиг, скажем, второй стадии с совершенно другим API. Поэтому разработчики должны убедиться, что при обновлении этих плагинов они вносят необходимые изменения в свой код.
Исходный вопрос: «В чем разница между babel-preset-stage-0, babel-preset-stage-1, babel-preset-stage-2 и babel-preset-stage-3». Странно, что ответы сосредоточены на «разнице». между TC39 этап-0, этап-1 .. терминология "проголосовали против, в то время как единственный релевантный (хотя и не точный) был проголосован против. Цитата с сайта Babel:
Пресет Babel - это общий список плагинов.
Официальные пресеты Babel Stage отслеживали процесс TC39 Staging для новых предложений синтаксиса в JavaScript.
Каждый пресет (например, stage-3, stage-2 и т. Д.) Включал все плагины для этого конкретного этапа и те, что над ним. Например, этап 2 включает этап 3 и так далее.
Основная идея - «те, кто выше». Я не отвечаю на вторую половину, поскольку ответы выше очень хороши по этой части.
У меня есть его. Ребята, вы можете сослаться на https://babeljs.io/docs/plugins/preset-stage-0/
Короче говоря, preset-stage-0
содержит всю функциональность, которая preset-stage-1
есть, и preset-stage-1
содержит все функции, которые preset-stage-2
есть, и так далее ...
Младший разряд более мощный. В вашем проекте, если вас не беспокоят проблемы, просто установите stage-0
...
stage-0
самом деле? Поскольку вы говорите: «Нижняя цифра более сильная», я не верю.
stage
с ES6
, @RGraham указал на это The Babel Preset which contains only ES6 features is preset-es2015
. Спасибо!
babel-preset-stage-0
включает в себя все плагины, от stage-0
до stage-3
. Это означает, что мне нужны все предлагаемые функции, независимо от того, могут ли они быть внесены в предложение или нет.
stage-1
? Насколько безопасно использовать? Могут ли некоторыеstage-1
функции быть устаревшими и изменены API в будущем?