Включение компиляции Babel с помощью Laravel Mix и использование полизаполнений для Internet Explorer
Шаг 1. Установите Corejs для получения полифиллов
Следуя документации Babeljs для babel-preset-env
2 Сначала нам нужно установить core-js (который содержит полифилы):
$ npm install core-js@3 --save
Шаг 2. Сконфигурировать .babelrc
создать файл .babelrc
в корне проекта:
{
"presets": [
[
"@babel/preset-env",
{
"useBuiltIns": "usage",
"corejs": {
"version": 3,
"proposals": false
},
"targets": {
"ie": "11"
}
}
]
]
}
Теперь запустите npm run dev
, и вы найдете вставленные полифилы, скомпилированные функции стрелок и т. Д. - ваш код может просто работать на IE11!
Laravel-Mix, Babel, IE:Некоторые gotchas
node_modules не обрабатываются с помощью babel
При конфигурации по умолчанию только исходный код в самом проекте, а не его зависимости, проходит через этап компиляции babel. Это означает, что любой let
или аналогичный в зависимостях отключит устаревшие браузеры 3 .
, используя `mix.babel ', рискуя скомпилировать файл дважды
LaravelСмешанные документы предлагают использовать функцию mix.babel
в разделе Vanilla JS 1 . Как это выглядит:
- , если нет
.babelrc
, указанный файл запускается через babel. - , если присутствует
.babelrc
, обычный шаг компиляции миксауже использует babel. Использование mix.babel
приводит к тому, что шаг компиляции запускается дважды.
Интересно, что дважды скомпилированный код не запускается в IE. Одна проблема состоит в том, что он будет содержать вызовы require () для полифиллов, которые не могут быть обработаны:
SCRIPT5009: 'require' is undefined