Skip to content

Commit 9846cd5

Browse files
committed
fix: fix caching dependency (close #1384)
1 parent 071b58b commit 9846cd5

File tree

9 files changed

+64
-61
lines changed

9 files changed

+64
-61
lines changed

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

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
module.exports = (api, options) => {
2-
const { genCacheConfig } = require('@vue/cli-shared-utils')
32
const useThreads = process.env.NODE_ENV === 'production' && options.parallel
43
const cliServicePath = require('path').dirname(require.resolve('@vue/cli-service'))
54

@@ -27,7 +26,11 @@ module.exports = (api, options) => {
2726
.end()
2827
.use('cache-loader')
2928
.loader('cache-loader')
30-
.options(genCacheConfig(api, options, 'babel-loader', 'babel.config.js'))
29+
.options(api.genCacheConfig('babel-loader', {
30+
'@babel/core': require('@babel/core/package.json').version,
31+
'@vue/babel-preset-app': require('@vue/babel-preset-app').version,
32+
'babel-loader': require('babel-loader/package.json').version
33+
}, 'babel.config.js'))
3134
.end()
3235

3336
if (useThreads) {

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

+6-8
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,12 @@ module.exports = (api, options) => {
55
// eslint-loader doesn't bust cache when eslint config changes
66
// so we have to manually generate a cache identifier that takes the config
77
// into account.
8-
const { genCacheConfig } = require('@vue/cli-shared-utils')
9-
const { cacheIdentifier } = genCacheConfig(
10-
api,
11-
options,
12-
[
13-
'eslint-loader',
14-
'eslint'
15-
],
8+
const { cacheIdentifier } = api.genCacheConfig(
9+
'eslint-loader',
10+
{
11+
'eslint-loader': require('eslint-loader/package.json').version,
12+
'eslint': require('eslint/package.json').version
13+
},
1614
[
1715
'.eslintrc.js',
1816
'.eslintrc.yaml',

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

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
module.exports = (api, options) => {
22
const fs = require('fs')
3-
const { genCacheConfig } = require('@vue/cli-shared-utils')
43
const useThreads = process.env.NODE_ENV === 'production' && options.parallel
54

65
api.chainWebpack(config => {
@@ -23,7 +22,10 @@ module.exports = (api, options) => {
2322

2423
addLoader({
2524
loader: 'cache-loader',
26-
options: genCacheConfig(api, options, 'ts-loader', 'tsconfig.json')
25+
options: api.genCacheConfig('ts-loader', {
26+
'ts-loader': require('ts-loader/package.json').version,
27+
'typescript': require('typescript/package.json').versiono
28+
}, 'tsconfig.json')
2729
})
2830

2931
if (useThreads) {

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

+43
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
const path = require('path')
2+
const hash = require('hash-sum')
23
const { matchesPluginId } = require('@vue/cli-shared-utils')
34

45
// Note: if a plugin-registered command needs to run in a specific default mode,
@@ -114,6 +115,48 @@ class PluginAPI {
114115
resolveChainableWebpackConfig () {
115116
return this.service.resolveChainableWebpackConfig()
116117
}
118+
119+
/**
120+
* Generate a cache identifier from a number of variables
121+
*/
122+
genCacheConfig (id, partialIdentifier, configFiles) {
123+
const fs = require('fs')
124+
const cacheDirectory = this.resolve(`node_modules/.cache/${id}`)
125+
126+
const variables = {
127+
partialIdentifier,
128+
'cli-service': require('../package.json').version,
129+
'cache-loader': require('cache-loader/package.json').version,
130+
env: process.env.NODE_ENV,
131+
test: !!process.env.VUE_CLI_TEST,
132+
config: [
133+
this.service.projectOptions.chainWebpack,
134+
this.service.projectOptions.configureWebpack
135+
]
136+
}
137+
138+
if (configFiles) {
139+
const readConfig = file => {
140+
const absolutePath = this.resolve(file)
141+
if (fs.existsSync(absolutePath)) {
142+
return fs.readFileSync(absolutePath, 'utf-8')
143+
}
144+
}
145+
if (!Array.isArray(configFiles)) {
146+
configFiles = [configFiles]
147+
}
148+
for (const file of configFiles) {
149+
const content = readConfig(file)
150+
if (content) {
151+
variables.configFiles = content
152+
break
153+
}
154+
}
155+
}
156+
157+
const cacheIdentifier = hash(variables)
158+
return { cacheDirectory, cacheIdentifier }
159+
}
117160
}
118161

119162
module.exports = PluginAPI

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

+5-3
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,11 @@ module.exports = (api, options) => {
4646
// js is handled by cli-plugin-bable ---------------------------------------
4747

4848
// vue-loader --------------------------------------------------------------
49-
50-
const { genCacheConfig } = require('@vue/cli-shared-utils')
51-
const vueLoaderCacheConfig = genCacheConfig(api, options, 'vue-loader')
49+
const vueLoaderCacheConfig = api.genCacheConfig('vue-loader', {
50+
'vue-loader': require('vue-loader/package.json').version,
51+
'@vue/component-compiler-utils': require('@vue/component-compiler-utils/package.json').version,
52+
'vue-template-compiler': require('vue-template-compiler/package.json').version
53+
})
5254

5355
webpackConfig.module
5456
.rule('vue')

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

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
"fs-extra": "^6.0.1",
4242
"get-value": "^3.0.1",
4343
"globby": "^8.0.1",
44+
"hash-sum": "^1.0.2",
4445
"html-webpack-plugin": "^3.2.0",
4546
"launch-editor-middleware": "^2.2.1",
4647
"lodash.defaultsdeep": "^4.6.0",

packages/@vue/cli-shared-utils/index.js

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
'env',
33
'exit',
44
'ipc',
5-
'cache',
65
'logger',
76
'openBrowser',
87
'pluginResolution',

packages/@vue/cli-shared-utils/lib/cache.js

-44
This file was deleted.

packages/@vue/cli-shared-utils/package.json

-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
"chalk": "^2.3.0",
2323
"cmd-shim": "^2.0.2",
2424
"execa": "^0.10.0",
25-
"hash-sum": "^1.0.2",
2625
"joi": "^12.0.0",
2726
"node-ipc": "^9.1.1",
2827
"opn": "^5.2.0",

0 commit comments

Comments
 (0)