UNPKG

1.33 kBJavaScriptView Raw
1const path = require('path')
2const resolveFrom = require('resolve-from')
3
4exports.name = 'builtin:config-vue'
5
6exports.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 // TODO: error with thread-loader
36 compiler: api.localRequire('vue-template-compiler')
37 },
38 // For Vue templates
39 api.config.cache && getCacheOptions()
40 )
41 )
42
43 config.plugin('vue').use(require('vue-loader/lib/plugin'))
44 })
45}