mirror of
https://github.com/nuxt/nuxt.git
synced 2024-11-30 17:37:14 +00:00
ef7a42649d
nuxt-start and nuxt/legacy are also coming!
61 lines
1.2 KiB
JavaScript
61 lines
1.2 KiB
JavaScript
import path from 'path'
|
|
|
|
import threadLoader from 'thread-loader'
|
|
|
|
// https://github.com/webpack-contrib/thread-loader
|
|
// https://github.com/webpack-contrib/cache-loader
|
|
|
|
export default class PerfLoader {
|
|
constructor(builder) {
|
|
this.builder = builder
|
|
this.options = builder.options
|
|
|
|
this.workerPools = {
|
|
js: {
|
|
name: 'js',
|
|
poolTimeout: this.options.dev ? Infinity : 2000
|
|
|
|
},
|
|
css: {
|
|
name: 'css',
|
|
poolTimeout: this.options.dev ? Infinity : 2000
|
|
}
|
|
}
|
|
}
|
|
|
|
warmup() {
|
|
if (!this.options.build.parallel) {
|
|
return
|
|
}
|
|
|
|
threadLoader.warmup(this.workerPools.js, ['babel-loader', 'babel-preset-env'])
|
|
threadLoader.warmup(this.workerPools.css, ['css-loader'])
|
|
}
|
|
|
|
pool(poolName, _loaders) {
|
|
const loaders = [].concat(_loaders)
|
|
|
|
if (this.options.build.parallel) {
|
|
const pool = this.workerPools[poolName]
|
|
|
|
if (pool) {
|
|
loaders.unshift({
|
|
loader: 'thread-loader',
|
|
options: pool
|
|
})
|
|
}
|
|
}
|
|
|
|
if (this.options.build.cache) {
|
|
loaders.unshift({
|
|
loader: 'cache-loader',
|
|
options: {
|
|
cacheDirectory: path.resolve('node_modules/.cache/cache-loader')
|
|
}
|
|
})
|
|
}
|
|
|
|
return loaders
|
|
}
|
|
}
|