Лучше ли использовать polyfill в качестве операторов импорта с babel-preset-env или добавить их в записи на webpack.config.js?
babel-preset-env
предлагает вариант useBuiltIns
применить его к babel-polyfill
и преобразовать import 'babel-polyfill'
к конкретному, на основе окружающей среды, import 'core-js/whatever
,
Применяется ли это преобразование, если я добавлю babel-polyfill
в моем разделе ввода Webpack (см. пример ниже), или в этом случае useBuiltIns
игнорируется и заменяется всеми возможными импортами?
entry: {
app: ['babel-polyfill', './src/app.js']
}
1 ответ
Это работает, когда вы указываете:
"presets": [ ..., "env" ]
Это не связано с точкой входа, как ваш ./src/app.js
Я полагаю, уже содержит код с требованиями. Я просто не понимаю, чего ты хочешь добиться, добавив babel-polyfill
до точки входа, но, похоже, не влияет в этом случае.
Я постараюсь уточнить, как это работает. E сть babel-preset-env
плагин, который подготавливает список плагинов преобразования и полифилов. Этот список используется transform-polyfill-require-plugin
которые ищут import
а также require
заявления и заменяет его списком модулей, специфичных для окружающей среды.
Это никак не связано с точкой входа. Добавляя babel-polyfill
Вы просто добавляете его код в свой пакет. Итак transform-polyfill-require-plugin
все равно там не работает. Проверить это можно с помощью простой отладки.
И тебе это не нужно на самом деле. Вы можете просто добавить require("babel-polyfill");
один раз в вашем приложении, как это замечено в документах. Вы даже не можете импортировать babel-polyfill
в два раза, поскольку это может вызвать ошибку, поскольку записывает себя в global
и есть проверка на столкновение.