如何阻止Laravel Mix将const、let关键字转换为var?
解决方案
- 移除webpack.mix.js中自定义的babel-loader规则
Laravel Mix 6内置了对JS文件的Babel处理逻辑,你额外在mix.webpackConfig中添加的babel-loader规则优先级低于默认规则,不会生效还会产生冲突,直接删除这部分自定义配置即可。 - 使用官方
mix.babelConfig方法配置Babel
用Mix提供的专用Babel配置方法可以正确覆盖默认配置,核心是给@babel/preset-env添加modules: false参数,禁止转换ES模块语法,即可阻止const/let被转为var,修改后的配置如下:
const mix = require("laravel-mix"); mix.babelConfig({ presets: [ [ "@babel/preset-env", { targets: "defaults, not ie 11, not ie_mob 11", modules: false } ] ], plugins: ["@babel/plugin-proposal-class-properties"] }); mix .js("./app.js", "./assets/js") .postCss("./app.css", "./assets/css", [ require("tailwindcss"), require("autoprefixer"), ]);
- 修正browserslist配置(可选)
你当前package.json中的browserslist是单字符串放在数组中,可能存在解析错误,建议调整为单规则数组格式:
"browserslist": [ "defaults", "not ie 11", "not ie_mob 11" ]
- 清理缓存重新编译
修改Babel配置后需要清理编译缓存,避免旧缓存导致配置不生效,运行以下命令重新编译即可:npx mix clean && npx mix
内容的提问来源于stack exchange,提问作者Ali Ragab
相关产品推荐
相关产品推荐

