mirror of
https://github.com/nuxt/nuxt.git
synced 2025-02-12 03:38:07 +00:00
perf(builder): improve production build
This commit is contained in:
parent
f2fa8c8dd8
commit
00ef16d6dd
@ -15,7 +15,7 @@ import Debug from 'debug'
|
|||||||
import Glob from 'glob'
|
import Glob from 'glob'
|
||||||
import upath from 'upath'
|
import upath from 'upath'
|
||||||
|
|
||||||
import { r, wp, wChunk, createRoutes, parallel, relativeTo, waitFor, createSpinner } from '../common/utils'
|
import { r, wp, wChunk, createRoutes, parallel, sequence, relativeTo, waitFor, createSpinner } from '../common/utils'
|
||||||
import Options from '../common/options'
|
import Options from '../common/options'
|
||||||
|
|
||||||
import PerfLoader from './webpack/utils/perf-loader'
|
import PerfLoader from './webpack/utils/perf-loader'
|
||||||
@ -474,7 +474,9 @@ export default class Builder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Start Builds
|
// Start Builds
|
||||||
await parallel(this.compilers, compiler => {
|
const runner = this.options.dev ? parallel : sequence
|
||||||
|
|
||||||
|
await runner(this.compilers, compiler => {
|
||||||
return this.webpackCompile(compiler)
|
return this.webpackCompile(compiler)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -44,19 +44,22 @@ export default class ProgressPlugin extends webpack.ProgressPlugin {
|
|||||||
const progress = Math.floor(percent * 100)
|
const progress = Math.floor(percent * 100)
|
||||||
|
|
||||||
this.state.progress = progress
|
this.state.progress = progress
|
||||||
this.state.msg = (msg && msg.length) ? msg : (progress === 100 ? 'done' : 'still building')
|
this.state.msg = msg
|
||||||
this.state.details = details
|
this.state.details = details
|
||||||
|
this.state.isRunning = (progress && progress !== 100) && (msg && msg.length)
|
||||||
|
|
||||||
// Process all states
|
// Process all states
|
||||||
let inProgress = false
|
let isRunning = false
|
||||||
|
|
||||||
const lines = []
|
const lines = []
|
||||||
|
|
||||||
_.sortBy(Object.keys(sharedState), s => s.name).forEach(name => {
|
_.sortBy(Object.keys(sharedState), s => s.name).forEach(name => {
|
||||||
const state = sharedState[name]
|
const state = sharedState[name]
|
||||||
|
|
||||||
if (state.progress < 100) {
|
if (state.isRunning) {
|
||||||
inProgress = true
|
isRunning = true
|
||||||
|
} else {
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
const _color = chalk.keyword(state.color)
|
const _color = chalk.keyword(state.color)
|
||||||
@ -70,7 +73,7 @@ export default class ProgressPlugin extends webpack.ProgressPlugin {
|
|||||||
lines.push([_icon, _name, _bar, _msg, _progress].join(' '))
|
lines.push([_icon, _name, _bar, _msg, _progress].join(' '))
|
||||||
})
|
})
|
||||||
|
|
||||||
if (!inProgress) {
|
if (!isRunning) {
|
||||||
logUpdate.clear()
|
logUpdate.clear()
|
||||||
} else {
|
} else {
|
||||||
const title = chalk.bgRedBright.black('BUILDING')
|
const title = chalk.bgRedBright.black('BUILDING')
|
||||||
|
@ -38,8 +38,8 @@ export const createSpinner = function ({ minimal = false }) {
|
|||||||
|
|
||||||
// eslint-disable-next-line no-console
|
// eslint-disable-next-line no-console
|
||||||
const createLogger = (tag, ctx) => (...args) => ctx.enabled && console.log(
|
const createLogger = (tag, ctx) => (...args) => ctx.enabled && console.log(
|
||||||
`[${(new Date().toISOString)()}]`,
|
_.padEnd(`[${tag.toUpperCase()}]`, 9),
|
||||||
_.padEnd(`[${tag}]`, 10),
|
`[${new Date().toLocaleTimeString()}]`,
|
||||||
...args
|
...args
|
||||||
)
|
)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user