Подтвердить что ты не робот

Babel против babel-core vs babel-runtime

В моем проекте node webpack используются три библиотеки бабелей. Какая разница между ними и тем, как они используются?

"dependencies": {
  "babel-runtime": "^5.8.24"
}

"dev-dependencies": {
  "babel": "^5.8.23",
  "babel-core": "^5.8.23"
}
4b9b3361

Ответ 1

babel-core - это API. Для v5 пакет babel является CLI и зависит от babel-core. Для v6 пакет babel-cli - это CLI (команда буфера CLI все еще babel), а пакет babel ничего не делает. babel-runtime Я предполагаю, что это просто среда выполнения (polyfill и помощники) для поддержки уже преобразованного кода.

Ответ 2

TL; DR. Здесь нужно сравнить:

  • babel (используйте для 5.x.x) vs babel-cli + babel-core (выберите один для 6.x.x)
  • babel- polyfill (использование для не-библиотек) vs babel-runtime + babel-plugin-transform-runtime (использование для библиотек)

Из https://babeljs.io/blog/2015/10/31/setting-up-babel-6:

Пакет babel больше нет. Раньше это был весь компилятор и все преобразования плюс набор инструментов CLI, но это приводило к излишне большим загрузкам и было немного запутанным. Теперь мы разделили его на два отдельных пакета: babel-cli и babel-core.

npm install --global babel-cli

или

npm install --save-dev babel-core

Если вы хотите использовать Babel из CLI, вы можете установить babel-cli или если вы хотите использовать API Node, вы можете установить babel-core.

babel-runtime позволяет полиполнам не загрязнять глобальное пространство, в отличие от babel- polyfill, который загрязняет ваше глобальное пространство. Из http://babeljs.io/docs/plugins/transform-runtime/:

[babel-runtime] автоматически заполняет ваш код без загрязняющих глобальных переменных. (Этот плагин рекомендуется в библиотеке/инструменте)

Если вы используете babel-runtime, вы также должны

npm install --save-dev babel-plugin-transform-runtime

В большинстве случаев вы должны установить babel-plugin-transform-runtime как зависимость от разработки (с -save-dev) и babel-runtime как производственную зависимость (с -save).

Плагин преобразования обычно используется только в разработке, но сам процесс выполнения будет зависеть от вашего развернутого/опубликованного кода.

Кроме того, babel-runtime + babel-plugin-transform-runtime и babel- polyfill, как правило, являются взаимоисключающими - это означает, что вы должны использовать только тот или иной. Из комментария здесь http://jamesknelson.com/the-six-things-you-need-to-know-about-babel-6/:

Вы должны использовать либо babel- polyfill, либо babel-runtime. Они взаимоисключающие - если, конечно, вы не знаете, что делаете. Но они, по сути, одно и то же. Это просто помощники. babel- polyfill достигает той же цели, изменяя глобальные глобальные значения, тогда как время выполнения babel делает это модульно. Если вы не разрабатываете библиотеку, Id рекомендует использовать polyfill.