Skip to content

Commit 926855f

Browse files
authored
feat!: make cache-loader optional (#6985)
1 parent 342c386 commit 926855f

File tree

4 files changed

+45
-22
lines changed

4 files changed

+45
-22
lines changed

packages/@vue/cli-plugin-typescript/index.js

+13-9
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,19 @@ module.exports = (api, projectOptions) => {
3030
tsxRule.use(name).loader(loader).options(options)
3131
}
3232

33-
addLoader({
34-
name: 'cache-loader',
35-
loader: require.resolve('cache-loader'),
36-
options: api.genCacheConfig('ts-loader', {
37-
'ts-loader': require('ts-loader/package.json').version,
38-
'typescript': require('typescript/package.json').version,
39-
modern: !!process.env.VUE_CLI_MODERN_BUILD
40-
}, 'tsconfig.json')
41-
})
33+
try {
34+
const cacheLoaderPath = require.resolve('cache-loader')
35+
36+
addLoader({
37+
name: 'cache-loader',
38+
loader: cacheLoaderPath,
39+
options: api.genCacheConfig('ts-loader', {
40+
'ts-loader': require('ts-loader/package.json').version,
41+
'typescript': require('typescript/package.json').version,
42+
modern: !!process.env.VUE_CLI_MODERN_BUILD
43+
}, 'tsconfig.json')
44+
})
45+
} catch (e) {}
4246

4347
if (useThreads) {
4448
addLoader({

packages/@vue/cli-plugin-typescript/package.json

+4-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
"@types/webpack-env": "^1.15.2",
2828
"@vue/cli-shared-utils": "^5.0.0-rc.2",
2929
"babel-loader": "^8.2.2",
30-
"cache-loader": "^4.1.0",
3130
"fork-ts-checker-webpack-plugin": "^6.4.0",
3231
"globby": "^11.0.2",
3332
"thread-loader": "^3.0.0",
@@ -37,11 +36,15 @@
3736
},
3837
"peerDependencies": {
3938
"@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0",
39+
"cache-loader": "^4.1.0",
4040
"typescript": ">=2",
4141
"vue": "^2 || ^3.2.13",
4242
"vue-template-compiler": "^2.0.0"
4343
},
4444
"peerDependenciesMeta": {
45+
"cache-loader": {
46+
"optional": true
47+
},
4548
"vue-template-compiler": {
4649
"optional": true
4750
}

packages/@vue/cli-service/lib/config/base.js

+24-11
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,11 @@ module.exports = (api, options) => {
5454
// js is handled by cli-plugin-babel ---------------------------------------
5555

5656
// vue-loader --------------------------------------------------------------
57+
let cacheLoaderPath
58+
try {
59+
cacheLoaderPath = require.resolve('cache-loader')
60+
} catch (e) {}
61+
5762
if (vueMajor === 2) {
5863
// for Vue 2 projects
5964
const vueLoaderCacheConfig = api.genCacheConfig('vue-loader', {
@@ -71,20 +76,25 @@ module.exports = (api, options) => {
7176
: 'vue/dist/vue.runtime.esm.js'
7277
)
7378

79+
if (cacheLoaderPath) {
80+
webpackConfig.module
81+
.rule('vue')
82+
.test(/\.vue$/)
83+
.use('cache-loader')
84+
.loader(cacheLoaderPath)
85+
.options(vueLoaderCacheConfig)
86+
}
87+
7488
webpackConfig.module
7589
.rule('vue')
7690
.test(/\.vue$/)
77-
.use('cache-loader')
78-
.loader(require.resolve('cache-loader'))
79-
.options(vueLoaderCacheConfig)
80-
.end()
8191
.use('vue-loader')
8292
.loader(require.resolve('@vue/vue-loader-v15'))
8393
.options(Object.assign({
8494
compilerOptions: {
8595
whitespace: 'condense'
8696
}
87-
}, vueLoaderCacheConfig))
97+
}, cacheLoaderPath ? vueLoaderCacheConfig : {}))
8898

8999
webpackConfig
90100
.plugin('vue-loader')
@@ -113,21 +123,24 @@ module.exports = (api, options) => {
113123
: 'vue/dist/vue.runtime.esm-bundler.js'
114124
)
115125

126+
if (cacheLoaderPath) {
127+
webpackConfig.module
128+
.rule('vue')
129+
.test(/\.vue$/)
130+
.use('cache-loader')
131+
.loader(cacheLoaderPath)
132+
.options(vueLoaderCacheConfig)
133+
}
134+
116135
webpackConfig.module
117136
.rule('vue')
118137
.test(/\.vue$/)
119-
.use('cache-loader')
120-
.loader(require.resolve('cache-loader'))
121-
.options(vueLoaderCacheConfig)
122-
.end()
123138
.use('vue-loader')
124139
.loader(require.resolve('vue-loader'))
125140
.options({
126141
...vueLoaderCacheConfig,
127142
babelParserPlugins: ['jsx', 'classProperties', 'decorators-legacy']
128143
})
129-
.end()
130-
.end()
131144

132145
webpackConfig
133146
.plugin('vue-loader')

packages/@vue/cli-service/package.json

+4-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
"address": "^1.1.2",
4040
"autoprefixer": "^10.2.4",
4141
"browserslist": "^4.16.3",
42-
"cache-loader": "^4.1.0",
4342
"case-sensitive-paths-webpack-plugin": "^2.3.0",
4443
"cli-highlight": "^2.1.10",
4544
"clipboardy": "^2.3.0",
@@ -85,6 +84,9 @@
8584
"webpack-sources": "*"
8685
},
8786
"peerDependenciesMeta": {
87+
"cache-loader": {
88+
"optional": true
89+
},
8890
"less-loader": {
8991
"optional": true
9092
},
@@ -108,6 +110,7 @@
108110
}
109111
},
110112
"devDependencies": {
113+
"cache-loader": "^4.1.0",
111114
"sass": "^1.32.7",
112115
"sass-loader": "^12.0.0",
113116
"stylus-loader": "^6.1.0",

0 commit comments

Comments
 (0)