@@ -23,10 +23,11 @@ import { type DevCommandOptions } from "../commands/dev.js";
2323import { eventBus } from "../utilities/eventBus.js" ;
2424import { logger } from "../utilities/logger.js" ;
2525import { resolveFileSources } from "../utilities/sourceFiles.js" ;
26- import { EphemeralDirectory , getTmpDir } from "../utilities/tempDirectories.js" ;
26+ import { clearTmpDirs , EphemeralDirectory , getTmpDir } from "../utilities/tempDirectories.js" ;
2727import { VERSION } from "../version.js" ;
2828import { startDevOutput } from "./devOutput.js" ;
2929import { startWorkerRuntime } from "./workerRuntime.js" ;
30+ import { existsSync , mkdirSync , rmSync } from "node:fs" ;
3031
3132export type DevSessionOptions = {
3233 name : string | undefined ;
@@ -37,6 +38,7 @@ export type DevSessionOptions = {
3738 rawArgs : DevCommandOptions ;
3839 client : CliApiClient ;
3940 onErr ?: ( error : Error ) => void ;
41+ keepTmpFiles : boolean ;
4042} ;
4143
4244export type DevSessionInstance = {
@@ -49,8 +51,10 @@ export async function startDevSession({
4951 rawArgs,
5052 client,
5153 dashboardUrl,
54+ keepTmpFiles,
5255} : DevSessionOptions ) : Promise < DevSessionInstance > {
53- const destination = getTmpDir ( rawConfig . workingDir , "build" ) ;
56+ clearTmpDirs ( rawConfig . workingDir ) ;
57+ const destination = getTmpDir ( rawConfig . workingDir , "build" , keepTmpFiles ) ;
5458
5559 const runtime = await startWorkerRuntime ( {
5660 name,
@@ -96,7 +100,7 @@ export async function startDevSession({
96100 try {
97101 logger . debug ( "Updated bundle" , { bundle, buildManifest } ) ;
98102
99- await runtime . initializeWorker ( buildManifest ) ;
103+ await runtime . initializeWorker ( buildManifest , workerDir ?. remove ?? ( ( ) => { } ) ) ;
100104 } catch ( error ) {
101105 if ( error instanceof Error ) {
102106 eventBus . emit ( "backgroundWorkerIndexingError" , buildManifest , error ) ;
@@ -124,6 +128,14 @@ export async function startDevSession({
124128 if ( bundled ) {
125129 eventBus . emit ( "rebuildStarted" , "dev" ) ;
126130 }
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+ }
127139 } ) ;
128140 b . onEnd ( async ( result : esbuild . BuildResult ) => {
129141 const errors = result . errors ;
@@ -141,7 +153,7 @@ export async function startDevSession({
141153 // First bundle, no need to update bundle
142154 bundled = true ;
143155 } else {
144- const workerDir = getTmpDir ( rawConfig . workingDir , "build" ) ;
156+ const workerDir = getTmpDir ( rawConfig . workingDir , "build" , keepTmpFiles ) ;
145157
146158 await updateBuild ( result , workerDir ) ;
147159 }
0 commit comments