#webpack #ecmascript-6 #ecmascript-5 #laravel-mix
#webpack #ecmascript-6 #ecmascript-5 #laravel-mix
Вопрос:
Похоже, что Laravel Mix не переносится vendor.js и manifest.js на ES5. Сбой на iPhone Safari и IE 11.
IE DevTools показывает эти ошибки:
И похоже, что у него все еще есть функции ES6:
Другие файлы, такие как app.js
и фрагменты, похоже, переносятся.
Вот мой webpack.mix.js
let mix = require('laravel-mix');
let options = {
processCssUrls: false,
}
let config = {
output: {
chunkFilename: 'assets/js/chunks/[name].js',
publicPath: '/'
}
}
if (mix.inProduction()) {
config.output.chunkFilename = 'assets/js/chunks/[name].[chunkhash].js'
}
mix
.js('resources/assets/js/app.js', 'public/assets/js')
.sass('resources/assets/sass/web.scss', 'public/assets/css')
.sass('resources/assets/sass/fonts.scss', 'public/assets/css')
.copy('resources/assets/img', 'public/assets/img')
.copy('node_modules/@fortawesome/fontawesome-free/webfonts','public/assets/webfonts')
.extract([
// Libraries...
])
.disableNotifications()
.webpackConfig(config)
.options(options)
.sourceMaps()
if (mix.inProduction()) {
mix.version()
}
И мой .babelrc
{
"plugins": ["syntax-dynamic-import"]
}
Я попробовал следующее:
- Установите
babel-preset-es2015
и добавьтеes2015
в мои.babelrc
предустановки. - Добавить
.babel('[...]/vendor.js', '[...]/vendor.es5.js')
в мой webpack.mix.js
Как я могу получить vendor.js и manifest.js файл для переноса на ES5? Или, по крайней мере, заставить его работать с IE 11 и iPhone Safari.
Комментарии:
1. Вы нашли решение для этого?
2. @mike.bronner Я обнаружил, что проблема в строке запроса. Я использовал query-string-es5, который тем временем переносится должным образом. github.com/JeffreyWay/laravel-mix/issues /…
Ответ №1:
После некоторого исследования стало ясно, что Laravel Mix 4.x не переносит включенные пакеты. Чтобы добиться этого, добавьте следующее в свой webpack.mix.js
файл перед вашими командами mix:
mix.webpackConfig({
module: {
rules: [
{
test: /.jsx?$/,
exclude: /(bower_components)/,
use: [
{
loader: 'babel-loader',
options: Config.babel()
}
]
}
]
}
});
Это переопределяет конфигурацию по умолчанию, которая исключает node_modules
из переноса.
Комментарии:
1. Жаль, что это ничего не отменяет , по крайней мере, с Laravel-Mix
^5.0.1
, он объединится просто потому, что может (и дублирует laravel-mix по умолчанию, который уже вызываетсяbabel-loader
, и повторные вызовы ничего не должны делать).