В моем проекте node webpack используются три библиотеки бабелей. Какая разница между ними и тем, как они используются?
"dependencies": {
"babel-runtime": "^5.8.24"
}
"dev-dependencies": {
"babel": "^5.8.23",
"babel-core": "^5.8.23"
}
В моем проекте node webpack используются три библиотеки бабелей. Какая разница между ними и тем, как они используются?
"dependencies": {
"babel-runtime": "^5.8.24"
}
"dev-dependencies": {
"babel": "^5.8.23",
"babel-core": "^5.8.23"
}
babel-core
- это API. Для v5 пакет babel
является CLI и зависит от babel-core
. Для v6 пакет babel-cli
- это CLI (команда буфера CLI все еще babel
), а пакет babel
ничего не делает. babel-runtime
Я предполагаю, что это просто среда выполнения (polyfill и помощники) для поддержки уже преобразованного кода.
TL; DR. Здесь нужно сравнить:
Из 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.