Skip to content

Commit 7605bd6

Browse files
committed
feat: add caching for babel
1 parent abaed00 commit 7605bd6

File tree

4 files changed

+46
-2
lines changed

4 files changed

+46
-2
lines changed

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

+21
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
module.exports = api => {
2+
const cacheDirectory = api.resolve('node_modules/.cache/cache-loader')
3+
24
api.chainWebpack(webpackConfig => {
35
webpackConfig.module
46
.rule('js')
@@ -7,7 +9,26 @@ module.exports = api => {
79
.add(api.resolve('src'))
810
.add(api.resolve('test'))
911
.end()
12+
.use('cache-loader')
13+
.loader(require.resolve('cache-loader'))
14+
.options({ cacheDirectory })
15+
.end()
1016
.use('babel-loader')
1117
.loader(require.resolve('babel-loader'))
18+
19+
webpackConfig.module
20+
.rule('vue')
21+
.use('vue-loader')
22+
.tap(options => {
23+
options.loaders = options.loaders || {}
24+
options.loaders.js = [
25+
{
26+
loader: 'cache-loader',
27+
options: { cacheDirectory }
28+
},
29+
'babel-loader'
30+
]
31+
return options
32+
})
1233
})
1334
}

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@
2020
"homepage": "https://github.com/vuejs/vue-cli/packages/@vue/cli-plugin-babel#readme",
2121
"dependencies": {
2222
"@babel/core": "^7.0.0-0",
23-
"babel-loader": "^7.1.2"
23+
"babel-loader": "^7.1.2",
24+
"cache-loader": "^1.2.0"
2425
},
2526
"publishConfig": {
2627
"access": "public"

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

+14-1
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,20 @@ module.exports = (api, options) => {
150150
ignore: ['index.html', '.*']
151151
}]])
152152

153-
// TODO investigate happypack/cache-loader/DLL plugin options
153+
// TODO parallelazation
154+
// thread-loader doesn't seem to have obvious effect because vue-loader
155+
// offloads most of the work to other loaders. We may need to re-think
156+
// vue-loader implementation in order to better take advantage of
157+
// parallelazation
158+
159+
// webpackConfig.module
160+
// .rule('vue')
161+
// .use('thread-loader')
162+
// .before('vue-loader')
163+
// .loader('thread-loader')
164+
// .options({ name: 'vue' })
165+
166+
// TODO DLL
154167
}
155168
})
156169
}

yarn.lock

+9
Original file line numberDiff line numberDiff line change
@@ -1590,6 +1590,15 @@ cache-base@^1.0.1:
15901590
union-value "^1.0.0"
15911591
unset-value "^1.0.0"
15921592

1593+
cache-loader@^1.2.0:
1594+
version "1.2.0"
1595+
resolved "https://registry.yarnpkg.com/cache-loader/-/cache-loader-1.2.0.tgz#cdc313ae53b3c13ce8ee0c9296cf16c736b15252"
1596+
dependencies:
1597+
async "^2.4.1"
1598+
loader-utils "^1.1.0"
1599+
mkdirp "^0.5.1"
1600+
schema-utils "^0.4.2"
1601+
15931602
caller-path@^0.1.0:
15941603
version "0.1.0"
15951604
resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f"

0 commit comments

Comments
 (0)