Fork me on GitHub

当transpileDependencies无效时

vue-cli 默认 babel-loader 忽略 node_modules
当某个依赖(如 vue-baberrage)存在 ES6 语法时,vue 官方给出的解决方案是 transpileDependencies

1
2
3
4
5
6
默认情况下 babel-loader 会忽略所有 node_modules 中的文件。如果你想要通过 Babel 显式转译一个依赖,可以在这个选项中列出来。

vue.config.js
module.exports = {
transpileDependencies : ['vue-baberrage'], // 需要转译的依赖数组
}

但自测 transpileDependencies 无效,解决办法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
chainWebpack: config => {
config.module.rule('js')
.test(/\.m?jsx?$/)
.exclude
.clear()
.add(filepath => {
if (/\.vue\.jsx?$/.test(filepath)) {
return false
}
// exclude dynamic entries from cli-service
const cliServicePath = require('path').dirname(require.resolve('@vue/cli-service'))
if (filepath.startsWith(cliServicePath)) {
return true
}
// check if this is something the user explicitly wants to transpile
if ([/vue-baberrage/].some(dep => filepath.match(dep))) {
return false
}
// Don't transpile node_modules
return /node_modules/.test(filepath)
})
.end()
.use('babel-loader')
.loader('babel-loader')

}
-------------感谢您的阅读 有问题请留言(或mailto:frostbelt@sina.cn)-------------