From bae31b5fadb631c7458b1d8e82abdec7c4ea0abd Mon Sep 17 00:00:00 2001 From: Erik Demaine Date: Wed, 21 Feb 2024 15:09:46 -0500 Subject: [PATCH] Fix esbuild emitFile to mkdir subdirectories too --- src/esbuild/utils.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/esbuild/utils.ts b/src/esbuild/utils.ts index d2b13f11..6a287258 100644 --- a/src/esbuild/utils.ts +++ b/src/esbuild/utils.ts @@ -126,13 +126,15 @@ export function createBuildContext(initialOptions: BuildOptions): UnpluginBuildC throw new Error('unplugin/esbuild: addWatchFile outside supported hooks (resolveId, load, transform)') }, emitFile(emittedFile) { - // Ensure output directory exists for this.emitFile - if (initialOptions.outdir && !fs.existsSync(initialOptions.outdir)) - fs.mkdirSync(initialOptions.outdir, { recursive: true }) - const outFileName = emittedFile.fileName || emittedFile.name - if (initialOptions.outdir && emittedFile.source && outFileName) - fs.writeFileSync(path.resolve(initialOptions.outdir, outFileName), emittedFile.source) + if (initialOptions.outdir && emittedFile.source && outFileName) { + const outPath = path.resolve(initialOptions.outdir, outFileName) + // Ensure output directory exists for this.emitFile + const outDir = path.dirname(outPath) + if (!fs.existsSync(outDir)) + fs.mkdirSync(outDir, { recursive: true }) + fs.writeFileSync(outPath, emittedFile.source) + } }, getWatchFiles() { return watchFiles