mirror of
https://github.com/terribleplan/next.js.git
synced 2024-01-19 02:48:18 +00:00
f01457e8fc
Takes advantage of caching between builds for Terser, also makes writing caches for babel-loader faster by disabling compression. Results for zeit.co (350 pages): Without cache: [4:16:22 PM] Compiled server in 1m [4:16:57 PM] Compiled client in 2m ✨ Done in 125.83s. With cache: [4:19:38 PM] Compiled client in 17s [4:19:50 PM] Compiled server in 29s ✨ Done in 31.79s. Note: these results are from my multi-core Macbook Pro 2017, exact specs: MacBook Pro (13-inch, 2017, Four Thunderbolt 3 Ports) - 3,3 GHz Intel Core i5 - 16 GB 2133 MHz LPDDR3 - Intel Iris Plus Graphics 650 1536 MB The `without cache` build runs uglify in parallel, so without cache is likely to take longer on environments where you have only 1 core available. The `with cache` build however runs in a single thread, so the results should be similar.
43 lines
1.2 KiB
JavaScript
43 lines
1.2 KiB
JavaScript
import babelLoader from 'babel-loader'
|
|
|
|
module.exports = babelLoader.custom(babel => {
|
|
const presetItem = babel.createConfigItem(require('../../babel/preset'), {type: 'preset'})
|
|
|
|
const configs = new Set()
|
|
|
|
return {
|
|
customOptions (opts) {
|
|
const custom = {
|
|
isServer: opts.isServer,
|
|
dev: opts.dev
|
|
}
|
|
const loader = Object.assign({
|
|
cacheCompression: false,
|
|
cacheDirectory: true
|
|
}, opts)
|
|
delete loader.isServer
|
|
delete loader.dev
|
|
|
|
return { loader, custom }
|
|
},
|
|
config (cfg, {customOptions: {isServer, dev}}) {
|
|
const options = Object.assign({}, cfg.options)
|
|
if (cfg.hasFilesystemConfig()) {
|
|
for (const file of [cfg.babelrc, cfg.config]) {
|
|
// We only log for client compilation otherwise there will be double output
|
|
if (file && !isServer && !configs.has(file)) {
|
|
configs.add(file)
|
|
console.log(`> Using external babel configuration`)
|
|
console.log(`> Location: "${file}"`)
|
|
}
|
|
}
|
|
} else {
|
|
// Add our default preset if the no "babelrc" found.
|
|
options.presets = [...options.presets, presetItem]
|
|
}
|
|
|
|
return options
|
|
}
|
|
}
|
|
})
|