laravel 5.3的时候开始使用 webpack 2 + vue 2,放弃了 requirejs + bower。

当时的 larave mix 用着挺麻烦的,各种坑,所以我们直接使用的webpack 目前用着还挺顺手的。

这个坑是这样的,当时使用的是 webpack 2.1 的 beta 版本,webpack -p 一直很正常,但是前几天升级到了 webpack 2.2.1 ,相应的 把vue,vue-loader 等各种包也升级到了最新,也调整了 webpack 的配置,但是突然发现,webpack -p 一直报错语法错误。

不明白为什么,只能慢慢定位了,最终发现是 vue component 中只要使用了 es6 的语法,就会报语法错误,不在 component 中的 es6 语法就没问题。这个现象说明是 babel 没有转换 vue component 中的 es6。这我就不明白了,配置大概如下

1
2
3
4
5
6
{
test: /\.js$/,
exclude: /node_modules/,
loader: "babel-loader",
query: { presets: [ "es2015" ] }
},

原来一直没问题,没理由现在不行了啊,终于让我在 vue-loader 的 issues 中找到了答案。https://github.com/vuejs/vue-loader/issues/350

1
2
3
作者的原话
Don't use query, use .babelrc. Your loader query only applies to the files matched by /\.js$/ so they won't apply to vue files.

意思就是不用 query,用 .babelrc !!!