import { existsSync } from "fs"; import grabDirNames from "../utils/grab-dir-names"; import { DistDirEnvName, resolveDistDir } from "../utils/grab-dist-dir"; /** * # Set the dist directory for this process and its children * Precedence: `params.dist_dir` (the CLI's `--dist-dir`), then an existing * `BUNEXT_DIST_DIR` env var, then `dist_dir` from bunext.config.ts. Stores * the absolute path in `BUNEXT_DIST_DIR`, which `grabDirNames()` reads and * child processes inherit. Runs at the start of every CLI command and of * `bunextInit()`, before anything reads the artifact paths. Throws on an * invalid directory. */ export default async function setupDistDir(params) { const root_dir = process.cwd(); const dist_dir = params?.dist_dir || process.env[DistDirEnvName] || (await grabConfigDistDir()); if (!dist_dir) return; process.env[DistDirEnvName] = resolveDistDir({ dist_dir, root_dir }); } async function grabConfigDistDir() { const { CONFIG_FILE } = grabDirNames(); if (!existsSync(CONFIG_FILE)) return; try { const config = (await import(CONFIG_FILE)).default; return config?.dist_dir; } catch (error) { // The config is loaded again later, which reports the error. return; } }