@@ -23,10 +23,11 @@ import { type DevCommandOptions } from "../commands/dev.js";
23
23
import { eventBus } from "../utilities/eventBus.js" ;
24
24
import { logger } from "../utilities/logger.js" ;
25
25
import { resolveFileSources } from "../utilities/sourceFiles.js" ;
26
- import { EphemeralDirectory , getTmpDir } from "../utilities/tempDirectories.js" ;
26
+ import { clearTmpDirs , EphemeralDirectory , getTmpDir } from "../utilities/tempDirectories.js" ;
27
27
import { VERSION } from "../version.js" ;
28
28
import { startDevOutput } from "./devOutput.js" ;
29
29
import { startWorkerRuntime } from "./workerRuntime.js" ;
30
+ import { existsSync , mkdirSync , rmSync } from "node:fs" ;
30
31
31
32
export type DevSessionOptions = {
32
33
name : string | undefined ;
@@ -37,6 +38,7 @@ export type DevSessionOptions = {
37
38
rawArgs : DevCommandOptions ;
38
39
client : CliApiClient ;
39
40
onErr ?: ( error : Error ) => void ;
41
+ keepTmpFiles : boolean ;
40
42
} ;
41
43
42
44
export type DevSessionInstance = {
@@ -49,8 +51,10 @@ export async function startDevSession({
49
51
rawArgs,
50
52
client,
51
53
dashboardUrl,
54
+ keepTmpFiles,
52
55
} : DevSessionOptions ) : Promise < DevSessionInstance > {
53
- const destination = getTmpDir ( rawConfig . workingDir , "build" ) ;
56
+ clearTmpDirs ( rawConfig . workingDir ) ;
57
+ const destination = getTmpDir ( rawConfig . workingDir , "build" , keepTmpFiles ) ;
54
58
55
59
const runtime = await startWorkerRuntime ( {
56
60
name,
@@ -96,7 +100,7 @@ export async function startDevSession({
96
100
try {
97
101
logger . debug ( "Updated bundle" , { bundle, buildManifest } ) ;
98
102
99
- await runtime . initializeWorker ( buildManifest ) ;
103
+ await runtime . initializeWorker ( buildManifest , workerDir ?. remove ?? ( ( ) => { } ) ) ;
100
104
} catch ( error ) {
101
105
if ( error instanceof Error ) {
102
106
eventBus . emit ( "backgroundWorkerIndexingError" , buildManifest , error ) ;
@@ -124,6 +128,14 @@ export async function startDevSession({
124
128
if ( bundled ) {
125
129
eventBus . emit ( "rebuildStarted" , "dev" ) ;
126
130
}
131
+
132
+ const outdir = b . initialOptions . outdir ;
133
+ if ( outdir && existsSync ( outdir ) ) {
134
+ logger . debug ( "Removing outdir" , { outdir } ) ;
135
+
136
+ rmSync ( outdir , { recursive : true , force : true } ) ;
137
+ mkdirSync ( outdir , { recursive : true } ) ;
138
+ }
127
139
} ) ;
128
140
b . onEnd ( async ( result : esbuild . BuildResult ) => {
129
141
const errors = result . errors ;
@@ -141,7 +153,7 @@ export async function startDevSession({
141
153
// First bundle, no need to update bundle
142
154
bundled = true ;
143
155
} else {
144
- const workerDir = getTmpDir ( rawConfig . workingDir , "build" ) ;
156
+ const workerDir = getTmpDir ( rawConfig . workingDir , "build" , keepTmpFiles ) ;
145
157
146
158
await updateBuild ( result , workerDir ) ;
147
159
}
0 commit comments