1 | const path = require('path')
|
2 | const resolveFrom = require('resolve-from')
|
3 |
|
4 | exports.name = 'builtin:config-vue'
|
5 |
|
6 | exports.apply = api => {
|
7 | api.hook('createWebpackChain', config => {
|
8 | const rule = config.module.rule('vue').test(/\.vue$/)
|
9 |
|
10 | api.webpackUtils.addCacheSupport(rule, () => {
|
11 | const vueLoaderPath = path.dirname(require.resolve('vue-loader'))
|
12 | const compilerPkg = require(resolveFrom(
|
13 | vueLoaderPath,
|
14 | '@vue/component-compiler-utils/package'
|
15 | ))
|
16 | return api.getCacheConfig('vue-loader', {
|
17 | 'vue-loader': require('vue-loader/package').version,
|
18 | '@vue/component-compiler-utils': compilerPkg.version,
|
19 | 'vue-template-compiler': api.localResolve(
|
20 | 'vue-template-compiler/package'
|
21 | )
|
22 | ? api.localRequire('vue-template-compiler/package').version
|
23 | : null
|
24 | })
|
25 | })
|
26 |
|
27 | rule
|
28 | .use('vue-loader')
|
29 | .loader('vue-loader')
|
30 | .options({
|
31 |
|
32 | compiler: api.localRequire('vue-template-compiler')
|
33 | })
|
34 |
|
35 | config.plugin('vue').use(require('vue-loader/lib/plugin'))
|
36 | })
|
37 | }
|