Skip to content

Commit 3b3cd90

Browse files
authored
refactor: replace cache-loader with babel-loader's built-in cache (#6142)
It's supposed to have better performance. See babel/babel-loader#525 (comment) Besides, this improves webpack 5 compatibilities as cache-loader is now deprecated
1 parent c72b6b0 commit 3b3cd90

File tree

5 files changed

+19
-19
lines changed

5 files changed

+19
-19
lines changed

docs/core-plugins/babel.md

+1-2
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ module.exports = {
2020

2121
## Caching
2222

23-
[cache-loader](https://github.com/webpack-contrib/cache-loader) is enabled by default and cache is stored in `<projectRoot>/node_modules/.cache/babel-loader`.
23+
Cache options of [babel-loader](https://github.com/babel/babel-loader#options) is enabled by default and cache is stored in `<projectRoot>/node_modules/.cache/babel-loader`.
2424

2525
## Parallelization
2626

@@ -38,4 +38,3 @@ vue add babel
3838

3939
- `config.rule('js')`
4040
- `config.rule('js').use('babel-loader')`
41-
- `config.rule('js').use('cache-loader')`

packages/@vue/cli-plugin-babel/README.md

+1-2
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ module.exports = {
2020

2121
## Caching
2222

23-
[cache-loader](https://github.com/webpack-contrib/cache-loader) is enabled by default and cache is stored in `<projectRoot>/node_modules/.cache/babel-loader`.
23+
Cache options of [babel-loader](https://github.com/babel/babel-loader#options) is enabled by default and cache is stored in `<projectRoot>/node_modules/.cache/babel-loader`.
2424

2525
## Parallelization
2626

@@ -38,4 +38,3 @@ vue add babel
3838

3939
- `config.rule('js')`
4040
- `config.rule('js').use('babel-loader')`
41-
- `config.rule('js').use('cache-loader')`

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

+11-13
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ function genTranspileDepRegex (transpileDependencies) {
1616
return deps.length ? new RegExp(deps.join('|')) : null
1717
}
1818

19+
/** @type {import('@vue/cli-service').ServicePlugin} */
1920
module.exports = (api, options) => {
2021
const useThreads = process.env.NODE_ENV === 'production' && !!options.parallel
2122
const cliServicePath = path.dirname(require.resolve('@vue/cli-service'))
@@ -61,19 +62,6 @@ module.exports = (api, options) => {
6162
return /node_modules/.test(filepath)
6263
})
6364
.end()
64-
.use('cache-loader')
65-
.loader(require.resolve('cache-loader'))
66-
.options(api.genCacheConfig('babel-loader', {
67-
'@babel/core': require('@babel/core/package.json').version,
68-
'@vue/babel-preset-app': require('@vue/babel-preset-app/package.json').version,
69-
'babel-loader': require('babel-loader/package.json').version,
70-
modern: !!process.env.VUE_CLI_MODERN_BUILD,
71-
browserslist: api.service.pkg.browserslist
72-
}, [
73-
'babel.config.js',
74-
'.browserslistrc'
75-
]))
76-
.end()
7765

7866
if (useThreads) {
7967
const threadLoaderConfig = jsRule
@@ -88,5 +76,15 @@ module.exports = (api, options) => {
8876
jsRule
8977
.use('babel-loader')
9078
.loader(require.resolve('babel-loader'))
79+
.options(api.genCacheConfig('babel-loader', {
80+
'@babel/core': require('@babel/core/package.json').version,
81+
'@vue/babel-preset-app': require('@vue/babel-preset-app/package.json').version,
82+
'babel-loader': require('babel-loader/package.json').version,
83+
modern: !!process.env.VUE_CLI_MODERN_BUILD,
84+
browserslist: api.service.pkg.browserslist
85+
}, [
86+
'babel.config.js',
87+
'.browserslistrc'
88+
]))
9189
})
9290
}

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

-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
"@vue/babel-preset-app": "^4.5.8",
2525
"@vue/cli-shared-utils": "^4.5.8",
2626
"babel-loader": "^8.2.2",
27-
"cache-loader": "^4.1.0",
2827
"thread-loader": "^3.0.0",
2928
"webpack": "^5.10.0"
3029
},

packages/@vue/cli-service/lib/PluginAPI.js

+6-1
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,6 @@ class PluginAPI {
163163
const variables = {
164164
partialIdentifier,
165165
'cli-service': require('../package.json').version,
166-
'cache-loader': require('cache-loader/package.json').version,
167166
env: process.env.NODE_ENV,
168167
test: !!process.env.VUE_CLI_TEST,
169168
config: [
@@ -172,6 +171,12 @@ class PluginAPI {
172171
]
173172
}
174173

174+
try {
175+
variables['cache-loader'] = require('cache-loader/package.json').version
176+
} catch (e) {
177+
// cache-loader is only intended to be used for webpack 4
178+
}
179+
175180
if (!Array.isArray(configFiles)) {
176181
configFiles = [configFiles]
177182
}

0 commit comments

Comments
 (0)