Я работаю над веб-проектом, использующим Babel 7 с Webpack 4. Я никогда раньше не использовал Babel и не могу понять некоторые его части. На основании документации я использую @babel/preset-env
потому что это кажется рекомендуемым способом (особенно для начинающих). Также используется интеграция с .browserslistrc
через мой файл .browserslistrc
.
Webpack хорошо выполняет компиляцию (babel-loader
version 8.0.2
), у меня нет ошибок, но я запутался в этом параметре useBuiltIns: "entry"
упомянутая здесь опция useBuiltIns: "entry"
и как polyfill
система polyfill
в Babel.
.babelrc.js
module.exports = {
presets: [
['@babel/preset-env', {
"useBuiltIns": "entry" // do I need this?
}]
],
plugins: [
'@babel/plugin-syntax-dynamic-import'
]
};
.browserslistrc
Скопировано отсюда (разумно, потому что мой проект использует Bootstrap).
>= 1%
last 1 major version
not dead
Chrome >= 45
Firefox >= 38
Edge >= 12
Explorer >= 10
iOS >= 9
Safari >= 9
Android >= 4.4
Opera >= 30
Итак, мои вопросы:
1) Нужно ли использовать эту useBuiltIns: "entry"
?
2) Нужно ли устанавливать пакет @babel/polyfill
и запускать мои vendors.js
с помощью require("@babel/polyfill");
?
3) Что если я пропущу оба?
Если я сделаю 1 и 2, мой vendors.js
вырастет до 411 KB
Если я пропущу оба это просто 341 KB
после сборки производства.
Я думал, что @babel/preset-env
по умолчанию обрабатывает все перезаписи и полифиллы без необходимости дополнительного import/require
запроса на моей стороне...
Спасибо!
-- РЕДАКТИРОВАТЬ --
Команда Babel только что обновила документы @babel/polyfill
основываясь на некоторых проблемах GitHub (включая мою), жалуясь на неясную/вводящую в заблуждение документацию. Теперь понятно, как его использовать. (... и после этого мой оригинальный вопрос кажется глупым :)