Skip to content

Commit

Permalink
feat: add caching for babel
Browse files Browse the repository at this point in the history
  • Loading branch information
yyx990803 committed Jan 24, 2018
1 parent abaed00 commit 7605bd6
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 2 deletions.
21 changes: 21 additions & 0 deletions packages/@vue/cli-plugin-babel/index.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
module.exports = api => {
const cacheDirectory = api.resolve('node_modules/.cache/cache-loader')

api.chainWebpack(webpackConfig => {
webpackConfig.module
.rule('js')
Expand All @@ -7,7 +9,26 @@ module.exports = api => {
.add(api.resolve('src'))
.add(api.resolve('test'))
.end()
.use('cache-loader')
.loader(require.resolve('cache-loader'))
.options({ cacheDirectory })
.end()
.use('babel-loader')
.loader(require.resolve('babel-loader'))

webpackConfig.module
.rule('vue')
.use('vue-loader')
.tap(options => {
options.loaders = options.loaders || {}
options.loaders.js = [
{
loader: 'cache-loader',
options: { cacheDirectory }
},
'babel-loader'
]
return options
})
})
}
3 changes: 2 additions & 1 deletion packages/@vue/cli-plugin-babel/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@
"homepage": "https://github.com/vuejs/vue-cli/packages/@vue/cli-plugin-babel#readme",
"dependencies": {
"@babel/core": "^7.0.0-0",
"babel-loader": "^7.1.2"
"babel-loader": "^7.1.2",
"cache-loader": "^1.2.0"
},
"publishConfig": {
"access": "public"
Expand Down
15 changes: 14 additions & 1 deletion packages/@vue/cli-service/lib/config/prod.js
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,20 @@ module.exports = (api, options) => {
ignore: ['index.html', '.*']
}]])

// TODO investigate happypack/cache-loader/DLL plugin options
// TODO parallelazation
// thread-loader doesn't seem to have obvious effect because vue-loader
// offloads most of the work to other loaders. We may need to re-think
// vue-loader implementation in order to better take advantage of
// parallelazation

// webpackConfig.module
// .rule('vue')
// .use('thread-loader')
// .before('vue-loader')
// .loader('thread-loader')
// .options({ name: 'vue' })

// TODO DLL
}
})
}
9 changes: 9 additions & 0 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1590,6 +1590,15 @@ cache-base@^1.0.1:
union-value "^1.0.0"
unset-value "^1.0.0"

cache-loader@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/cache-loader/-/cache-loader-1.2.0.tgz#cdc313ae53b3c13ce8ee0c9296cf16c736b15252"
dependencies:
async "^2.4.1"
loader-utils "^1.1.0"
mkdirp "^0.5.1"
schema-utils "^0.4.2"

caller-path@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f"
Expand Down

0 comments on commit 7605bd6

Please sign in to comment.