tl;dr
Пресеты — это просто набор плагинов. Вы можете включать плагины по отдельности в массив plugins
или набор плагинов в массив presets
. Если плагин является частью коллекции (предустановки), вам не нужно включать его отдельно в plugins
.
То же самое касается пакетов npm, когда вы включаете их в package.json
.
Пресеты против плагинов
В Babel есть множество официальных и сторонних плагинов. Пресеты — это наборы плагинов или как говорят:
Пресеты — это общие .babelrc
конфигурации или просто набор плагинов babel.
Важное различие между ними заключается в том, что плагины загружаются перед пресетами.
Плагины предустановки
Наиболее распространенными пресетами являются официальные и прекращены экспериментальные пресеты.
Большинство официальных пресетов содержат плагины для преобразования функций стандартов EcmaScript, в то время как экспериментальные пресеты (стадия-x) содержат плагины, которые транспилируют будущие экспериментальные функции, стандартизация которых все еще находится в стадии разработки. Эти экспериментальные/предлагаемые пресеты устарели, начиная с Babel 7. У них есть блог запись о причинах. Прочтите раздел ниже, чтобы увидеть, как они работают.
Когда вы нажимаете на пресет, вы можете увидеть, какие плагины (и, возможно, другие пресеты) включены в него. Если вы включаете плагин через предустановку, вам не нужно включать его отдельно. То же самое касается package.json
, когда вы включаете пакеты пресетов npm.
Устаревшая система предустановок предложения
Переходя от этапа 0 (просто идея) к этапу 3 (кандидат), у вас были наборы плагинов, которые были ближе к стандартизации. Из-за этого, когда вы включали пресет, каждый пресет с более высоким значением stage-x также включался. Плагины, содержащиеся в этих пресетах, постоянно менялись в каждой версии, поскольку они находятся в стадии разработки, и есть вероятность, что плагины будут удалены, если они будут отклонены. Вот почему вам понадобился transform-decorators-legacy, потому что перенос декоратора был ранее удаленный из Babel, хотя они снова добавили его позже.
person
totymedli
schedule
29.08.2017