1+ import { tmpdir } from 'os'
2+ import { join } from 'path'
13import fs from 'mz/fs'
24import uuid from 'uuid'
3- import path from 'path '
5+ import del from 'del '
46import webpack from './webpack'
5- import clean from './clean'
67import gzipAssets from './gzip'
78import replaceCurrentBuild from './replace'
89
910export default async function build ( dir ) {
10- const distFolder = '.next'
11- const buildFolder = `.next-${ uuid . v4 ( ) } `
12- const compiler = await webpack ( dir , buildFolder )
11+ const buildDir = join ( tmpdir ( ) , uuid . v4 ( ) )
12+ const compiler = await webpack ( dir , { buildDir } )
1313
14- await runCompiler ( compiler )
15- const oldFolder = await replaceCurrentBuild ( dir , buildFolder , distFolder )
16- await gzipAssets ( dir , distFolder )
17- await writeBuildId ( dir , distFolder )
14+ try {
15+ await runCompiler ( compiler )
16+ await gzipAssets ( buildDir )
17+ await writeBuildId ( buildDir )
18+ } catch ( err ) {
19+ console . error ( `> Failed to build on ${ buildDir } ` )
20+ throw err
21+ }
1822
19- clean ( dir , oldFolder )
23+ await replaceCurrentBuild ( dir , buildDir )
24+
25+ // no need to wait
26+ del ( buildDir )
2027}
2128
2229function runCompiler ( compiler ) {
@@ -37,8 +44,8 @@ function runCompiler (compiler) {
3744 } )
3845}
3946
40- async function writeBuildId ( dir , distFolder ) {
41- const buildIdPath = path . resolve ( dir , distFolder , 'BUILD_ID' )
47+ async function writeBuildId ( dir ) {
48+ const buildIdPath = join ( dir , '.next' , 'BUILD_ID' )
4249 const buildId = uuid . v4 ( )
4350 await fs . writeFile ( buildIdPath , buildId , 'utf8' )
4451}
0 commit comments