Лучше ли использовать 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 и есть проверка на столкновение.

Другие вопросы по тегам