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 | const getCacheOptions = () => {
|
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 | api.webpackUtils.addCacheSupport(rule, getCacheOptions)
|
28 |
|
29 | rule
|
30 | .use('vue-loader')
|
31 | .loader(require.resolve('vue-loader'))
|
32 | .options(
|
33 | Object.assign(
|
34 | {
|
35 |
|
36 | compiler: api.localRequire('vue-template-compiler')
|
37 | },
|
38 |
|
39 | api.config.cache && getCacheOptions()
|
40 | )
|
41 | )
|
42 |
|
43 | config.plugin('vue').use(require('vue-loader/lib/plugin'))
|
44 | })
|
45 | }
|