1) Нужно ли использовать эту опцию useBuiltIns: «entry»?
Да, если вы хотите включить полифилы на основе вашей целевой среды.
TL; DR
Существует в основном 3 варианта для useBuiltIns
:
"запись" : при использовании этой опции @babel/preset-env
заменяет прямой импорт core-js
к импорту только определенных модулей, требуемых для целевой среды.
Это означает, что вам нужно добавить
import "core-js/stable";
import "regenerator-runtime/runtime";
к вашей точке входа, и эти строки будут заменены только необходимыми полизаполнениями.При таргетинге на chrome 72 он будет преобразован с @babel/preset-env
в
import "core-js/modules/es.array.unscopables.flat";
import "core-js/modules/es.array.unscopables.flat-map";
import "core-js/modules/es.object.from-entries";
import "core-js/modules/web.immediate";
«использование» : в этом случае полифилы будут добавлены автоматически при использовании какой-либо функциине поддерживается в целевой среде.Итак:
const set = new Set([1, 2, 3]);
[1, 2, 3].includes(2);
в таких браузерах, как ie11
, будет заменено на
import "core-js/modules/es.array.includes";
import "core-js/modules/es.array.iterator";
import "core-js/modules/es.object.to-string";
import "core-js/modules/es.set";
const set = new Set([1, 2, 3]);
[1, 2, 3].includes(2);
В случае, если целевой браузер является последним Chrome, преобразования не применяются.
Этолично я выбрал оружие, так как нет необходимости включать что-либо (core-js или регенератор) в исходный код, поскольку только требуемые полифилы будут добавляться автоматически в зависимости от целевого окружения, установленного в списке браузера.
false: это значение по умолчанию, когда полифиллы не добавляются автоматически.
2) Нужно ли устанавливать пакет @ babel / polyfill и запускать мои vendors.js с помощью require ("@Бабель / polyfill ");?
Да для среды до babel v7.4
и core-js v3
.
TL; DR
Нет.Начиная с babel v7.4
и core-js v3
(который используется для полизаполнения под колпаком) @babel/preset-env
будет добавлять полифилы только тогда, когда известно, какой из них требуется, и в рекомендованном порядке.
Кроме того @babel/polyfill
считается устаревшим в пользу отдельных включений core-js
и regenerator-runtime
.
Так что использование useBuiltIns
с параметрами, отличными от false, должно решить проблему.
Не забудьтедобавьте core-js
в качестве зависимости к вашему проекту и установите его версию в @babel/preset-env
в свойстве corejs
.
3) Что если я пропущу оба?
Как уже ответил @ PlayMa256, полифилов не будет.
Более подробную и полную информацию можно найти на core-js
странице создателя
Также, пожалуйста, не стесняйтесь играть с babel sandbox