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()
}
And my .babelrc
{
"plugins": ["syntax-dynamic-import"]
}
我尝试了以下方法:
- Install
babel-preset-es2015
并添加es2015
to my .babelrc
预设。
- Add
.babel('[...]/vendor.js', '[...]/vendor.es5.js')
到我的 webpack.mix.js
如何将vendor.js和manifest.js文件转换为ES5?或者至少让它与 IE 11 和 iPhone Safari 兼容。
经过一些研究,很明显 Laravel Mix 4.x 不会转译包含的包。要实现此目的,请将以下内容添加到您的webpack.mix.js
文件,在混合命令之前:
mix.webpackConfig({
module: {
rules: [
{
test: /\.jsx?$/,
exclude: /(bower_components)/,
use: [
{
loader: 'babel-loader',
options: Config.babel()
}
]
}
]
}
});
这会覆盖默认配置,其中排除node_modules
从带来转译。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)